因此,我編寫了這個軟件,用於實現4個選項卡(現在爲8)。現在,每個選項卡都是自己的QThread,顯然還有一個通用的GUI線程。當這需要更新時,工作線程(選項卡線程)將數據發送回GUI線程。例如,我在GUI線程中有一個statusBar文本,每次工作線程執行某些操作時都需要更新該文本。我使用了信號/槽的方式,以及我檢測輸入信號是這樣的:在Python中檢測模塊(將數據發送到GUI線程)
def setStatus(self, status):
#Defining SIGNAL sender
self.sender = QObject().sender()
if "module1" in str(self.sender):
self.module1CurrentStatus.setText(status)
現在這個工作和一切,但就像我說的,該軟件已經從實施4個選項卡,以成長實施8個選項卡。有沒有更好的方法來實現這一點,而不是使用sender()
?我只是在尋找所有模塊只能寫入一次的東西,這是GUI自動識別SIGNAL來自哪個線程的一種方式。我知道我可以爲每個模塊寫一個單獨的SIGNAL,但是我沒有做到這一點。
我可能在這裏錯過了一些東西。爲什麼不把線程的信號連接到適當的widget的'setText'而不是這個中間函數來設置狀態? – Avaris 2012-01-03 16:04:38
@Avaris,因爲我不能在非GUI(worker)線程中使用setText函數。 – 2012-01-03 23:37:57
仍然...您在主(GUI)線程中連接它們。這個'setStatus'方法在那裏,不是嗎?而且,你在主線程中創建你的工作線程,不是嗎?如果你可以將它們連接到'setStatus',你也可以將它們連接到'module1CurrentStatus.setText'。如果你分享更多的代碼來提供適當的上下文,也許會更好。 – Avaris 2012-01-03 23:51:20