今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
子线程里是不能更新UI界面的,在移动端方面。Android的UI访问是没有加锁的,多个线程可以同时访问更新操作同一个UI控件。也就是说访问UI的时候,android系统当中的控件都不是线程安全的,这将导致在多线程模式下,当多个线程共同访问更新操作同一个UI控件时容易发生不可控的错误。所以Android中规定只能在UI线程中访问UI,相当于从另一个角度给Android的UI访问加上锁,一个伪锁。

声明很多小伙伴学习Python过程中会遇到各种烦恼问题解决不了。为此小编建了个群 624440745。

在PyQT5中使用QThreadfrom PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time

#继承QThread

class Mythread(QThread):
# 定义信号,定义参数为str类型
breakSignal = pyqtSignal(int)

def __init__(self, parent=None):
super().__init__(parent)
# 下面的初始化方法都可以,有的python版本不支持
# super(Mythread, self).__init__()

def run(self):
#要定义的行为,比如开始一个活动什么的

for i in(1,1000):

print(i)
self.breakSignal.emit(i)

if __name__ == '__main__':
app = QApplication([])
dlg = QDialog()
dlg.resize(400, 300)
dlg.setWindowTitle("自定义按钮测试")
dlgLayout = QVBoxLayout()
dlgLayout.setContentsMargins(40, 40, 40, 40)
btn = QPushButton('测试按钮')
dlgLayout.addWidget(btn)
dlgLayout.addStretch(40)
dlg.setLayout(dlgLayout)
dlg.show()

def chuli(a):
# dlg.setWindowTitle(s)
btn.setText(str(a))

# 创建线程
thread = Mythread()
# # 注册信号处理函数
thread.breakSignal.connect(chuli)
# # 启动线程
thread.start()
dlg.exec_()
app.exit()

在python中刷新UI可以类似,采用消息传递的机制。

 注意:很多人学Python过程中会遇到各种烦恼问题解决不了。为此小编建了个Python全栈免费答疑交流.裙 :624440745不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

Python+PyQT5的子线程更新UI界面的实例《新手必学》的更多相关文章

  1. 子线程更新UI界面的2种方法

    一.一般我们都会在子线程完成一些耗时的操作. 1.Android中消息机制: 2.知识点: Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队, ...

  2. Android子线程更新UI的方法总结

    版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...

  3. OkHttp3几个简单的例子和在子线程更新UI线程的方法

    okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿. ...

  4. Android可以子线程更新UI?

    初了解Android的时候,就知道Android是不能在子线程更新UI的,不然程序会直接抛出异常,告诉你,别给我在自线程搞事情! 但是,这个是针对普通的view做的限制,而TextureView,Su ...

  5. android子线程更新UI

    参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...

  6. Android开发——实现子线程更新UI

    Android中线程按功能分的话,可以分为两个,一个是主线程(UI线程),其他的都是子线程 主线程不能执行那些耗时过长的代码或任务(执行耗时过长的代码会出现应用未响应的提示),所以都是使用子线程来执行 ...

  7. Qt 子线程更新Ui

    最近做练习,写一个Qt版的飞机大战,需要用子线程更新UI,发现Qt子线程不能更新Ui,否则程序会崩溃.在网上百度了下,说是需要在子线程自定义信号,然后在线程回调的run()函数里发射信号,主线程连接信 ...

  8. Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    Android应用的开发过程中需要把繁重的任务(IO,网络连接等)放到其他线程中异步执行,达到不阻塞UI的效果. 下面将由浅入深介绍Android进行异步处理的实现方法和系统底层的实现原理. 本文介绍 ...

  9. [Android学习笔记]子线程更新UI线程方法之Handler

    关于此笔记 不讨论: 1.不讨论Handler实现细节 2.不讨论android线程派发细节 讨论: 子线程如何简单的使用Handler更新UI 问题: android开发时,如何在子线程更新UI? ...

随机推荐

  1. Linux环境下的network IO

    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...

  2. (笔记)常用Llinu命令(一)

    Linux资源 鸟哥Linux:http://linux.vbird.org/linux_basic/ Linux命令大全:https://man.linuxde.net/ 目录切换 cd usr: ...

  3. 转载: Java虚拟机:运行时内存数据区域、对象内存分配与访问

    转载:  https://blog.csdn.net/a745233700/article/details/80291694  (虽然大部分内容都其实是深入理解jvm虚拟机这本书里的,不过整理的很牛逼 ...

  4. 吐血推荐珍藏的IDEA插件

    之前给大家推荐了一些我自己常用的VS Code插件,很多同学表示很受用,并私信我说要再推荐一些IDEA插件.作为一名职业Java程序员/业余js开发者,我平时还是用IDEA比较多,所以也确实珍藏了一些 ...

  5. C语言寒假大作战03

    这个作业属于哪个课程 软件4班 这个作业要求在哪里 C语言寒假大作战03 这个作业的目标 增加菜单程序各年级题目操作函数 参考文献 随机数rand 2.2.2 设计思路和遇到的问题 这次作业写好没多久 ...

  6. kvm 中 Guest Is already in use 处理办法

    在安装kvm时,如果安装相同名字的虚拟机,是会有错误提示的,就算是删除了虚拟机的xml文件,也会弹出错误提示.如下: ERROR Guest name 'test' is already in use ...

  7. python 异常之进阶操作

    1.文件分析 下面来做一些文件分析操作,分析整本书的信息. 知识点: string.split():将字符串分解为列表. open(filename,‘rb’)或者open(filename,enco ...

  8. 基于MXNet的im2rec.py的debug

    1.im2rec.py调试错误:multiprocessing not available, fall back to single threaded encoding imread 经过查找发现是程 ...

  9. AD域SSP安全防护

    一.简介 SSP(Security Support Provider)是windows操作系统安全机制的提供者.简单的说,SSP就是DLL文件,主要用于windows操作系统的身份认证功能,例如NTL ...

  10. coat 彩色的cat

    # 和cat类似,但每一行一种颜色,方便查看 curl -o coat https://raw.githubusercontent.com/oldratlee/useful-scripts/maste ...