欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决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线程的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。