让工作线程在GUI线程中等待用户输入? Python的/ PyQt的

时间:2011-10-23 23:01:15

标签: python multithreading pyqt

我有一个用Python编写的多线程应用程序,其中一个线程“关注”GUI,另一个是工作线程。但是,在某一点上,工作线程在处理数据中发出一个带有QString的信号,该信号连接到GUI线程中的di​​splay_image()函数。 display_image()函数要求用户输入一行文本。

我的问题是,如何让工作线程等待数据处理,直到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

1 个答案:

答案 0 :(得分:2)

线程之间进行通信的最简单方法是使用Queue模块。让GUI线程置于“好”值并让工作人员阻止获取以接收好的信号。