如何解决PySide+Python子线程更新UI线程的问题
小编给大家分享一下如何解决PySide+Python子线程更新UI线程的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
在我开发的系统,需要子线程去运行,然后把运行的结果发给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线程的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!