У меня есть 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()
...
Но я не уверен, что правильно объявляю новый сигнал, а также - куда будет доставляться сигнал?