在我開發的系統,需要子線程去運行,然后把運行的結果發給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線程的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答