解决PySide+Python子线程更新UI线程的问题
程序员文章站
2023-12-05 11:03:52
在我开发的系统,需要子线程去运行,然后把运行的结果发给ui线程,让ui线程知道运行的进度。
首先创建线程很简单
def newthread(self):
d...
在我开发的系统,需要子线程去运行,然后把运行的结果发给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线程的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。