2011-10-23 12 views
2

私は、Pythonで書かれたマルチスレッドアプリケーションを持っています。このアプリケーションでは、あるスレッドがGUIを "処理"し、もう1つはワーカースレッドです。しかし、ある時点で、ワーカースレッドは、データの処理の最中に、GUIスレッド内のdisplay_image()関数に接続するQStringでシグナルを送出します。 display_image()関数は、ユーザが1行のテキストを入力することを要求する。ワーカースレッドを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スレッドに「okay」の値を入力し、作業者にブロックしてもらうようにしてください。は正常な信号を受信します。

+0

キューモジュールは複数のクラスにわたって機能しますか? –

+0

はい、それはします:-) –

関連する問題