2011-10-23 35 views
2

我有一個用Python編寫的多線程應用程序,其中一個線程「照顧」GUI,另一個是工作線程。然而,在某一點上,工作線程在處理數據的過程中發出一個帶有QString的信號,該信號連接到GUI線程中的di​​splay_image()函數。 display_image()函數需要用戶輸入一行文本。使工作線程等待GUI線程中的用戶輸入? Python/PyQt

我的問題是,我怎麼能讓工作線程等待數據處理,直到display_image()函數返回一個值,也就是說,直到用戶按下OK按鈕?

GUI.py

class GUI(QMainWindow): 
    def __init__(self, parent=None): 
    super, etc 
    self.worker = worker.Worker() 

    def display_image(self, image):   
    """wait for user input""" 

Worker.py

class Worker(QThread): 
    def __init__(self, parent=None): 
    super, etc 

    def run(self): 
    self.emit(SIGNAL("imageFound(QString)"), image) 
    #wait until... 
    self.inputted_user_text = inputted_user_text # < this is what I need to figure out 

回答

2

線程之間進行通信的最簡單的方法是使用Queue模塊。有GUI線程一個「好」的價值,並讓工作人員阻止得到接收好的信號。

+0

Queue模塊是否可以跨多個類工作? –

+0

是的,它確實:-) –