2011-10-23 32 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

是的,它确实:-) –