解決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線程的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持神馬文庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章