Заставить рабочий поток ждать ввода пользователя в поток GUI?Python / PyQt - PullRequest
2 голосов
/ 24 октября 2011

У меня есть многопоточное приложение, написанное на Python, в котором один поток «заботится» о графическом интерфейсе, а другой - рабочий поток.Однако в какой-то момент рабочий поток посреди обработки данных посылает сигнал с QString, который подключается к функции display_image () в потоке GUI.Функция display_image () требует от пользователя ввода строки текста.

Мой вопрос заключается в том, как заставить рабочий поток ждать обработки данных, пока функция display_image () не вернет значение, то есть допользователь нажимает кнопку ОК?

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 Ответ

2 голосов
/ 24 октября 2011

Самый простой способ связи между потоками - это модуль Queue .Попросите поток GUI поставить значение "ОК", а работнику сделать блокировку get для получения сигнала ОК.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...