在我开发的系统,需要子线程去运行,然后把运行的结果发给UI线程,让UI线程知道运行的进度。
首先创建线程很简单
1
2
3
4
5
6
|
def newThread( self ):
d = Data()
print '子线程的运行'
t1 = threading.Thread(target = newThread)
t1.setDaemon( True )
t1.start()
|
之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是
首先,定义一个类,让他实现PySide.QtCore.QObject类
1
2
3
4
5
6
7
8
9
|
class Data(PySide.QtCore.QObject):
#定义信号
mySignal = Signal()
def __init__( self ):
#这句话很重要
super (Data, self ).__init__()
def run( self ):
mySignal.emit()
|
然后再把主线程的方法绑定到该槽上去
1
|
QtCore.QObject.connect(Data的实例,QtCore.SIGNAL( 'mySignal()' ), '主线程的方法' )
|
最后,就可以在子线程执行run方法的时候,就会调用UI线程的方法
以上这篇解决PySide+Python子线程更新UI线程的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_22765745/article/details/71122936