解决PySide+Python子线程更新UI线程的问题

Gretel ·
更新时间:2024-09-21
· 999 次阅读

在我开发的系统,需要子线程去运行,然后把运行的结果发给UI线程,让UI线程知道运行的进度。

首先创建线程很简单

def newThread(self): d = Data() print '子线程的运行' t1 = threading.Thread(target=newThread) t1.setDaemon(True) t1.start()

之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是

首先,定义一个类,让他实现PySide.QtCore.QObject类

class Data(PySide.QtCore.QObject): #定义信号 mySignal = Signal() def __init__(self): #这句话很重要 super(Data, self).__init__() def run(self): mySignal.emit()

然后再把主线程的方法绑定到该槽上去

QtCore.QObject.connect(Data的实例,QtCore.SIGNAL('mySignal()'),'主线程的方法')

最后,就可以在子线程执行run方法的时候,就会调用UI线程的方法

以上这篇解决PySide+Python子线程更新UI线程的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

您可能感兴趣的文章:python从子线程中获得返回值的方法python 多线程中子线程和主线程相互通信方法python主线程捕获子线程的方法python获取多线程及子线程的返回值Python+PyQT5的子线程更新UI界面的实例



pyside 线程 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号