Определить новый сигнал и доставить его из потока в поток - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть PyQT5 графическое приложение, в котором я создал специальный поток, выполняющий преобразование имен, то есть из IP-адресов в удобочитаемые имена.

Теперь мне нужен способ, чтобы рабочий поток мог сигнал основного потока (GUI) о том, что он завершил работу по разрешению имен, рабочий поток не остановлен или не завершен, он продолжает работать (даже если). Я обнаружил, что PyQt поддерживает сигналы и слоты, включая пользовательские сигналы.

Прав ли я, что мне нужно поддерживать собственный сигнал в моем приложении?

Я искал примеры использования сигналов в PyQt, но в конце концов запутался. Вот что я придумал:

class AddressResolutionThread(QThread):
   lookup_done_signal = pyqtSignal()
   def __init__(self):
      super(AddressResolutionThread, self).__init__(manager)
      # initialization etc.
      # ...

   def run(self):
      # logic to do IP resolution
      # .....
      self.lookup_done_signal.emit()


class AddressResolutionMain(QObject):
   def __init__(self):
      self.worker = AddressResolutionThread(self)
      # other members ...

   def start(self):
      self.worker.start()
   ...

class MyApplication(QApplication):
        def __init__(self, args):
           super().__init__(args)
           self.name_lookup = AddressResolutionMain()
           self.name_lookup.start()
        ...

Но я не уверен, что правильно объявляю новый сигнал, а также - куда будет доставляться сигнал?

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