сигналы в одном месте работают а в другом - нет =/
Есть класс синглтон для общих соединений
python
class Connections(QObject):
def __new__(cls):
# Тут код для синглтона
computeStarted = pyqtSignal(name="computeStarted")
btnComputeStartPressed = pyqtSignal(name="btnComputeStartPressed")
Создаю экземпляры в классах где буду использовать эти сигналы:
WindowTitlebar:
Здесь _on_btn_start_pressed присоеденена к нажатию кнопки
python
def __init__(...):
self.gui_connections.computeStarted.connect(self._on_compute_started) # соединяю computeStarted с методом _on_compute_started
def _on_btn_start_pressed(self): # !!! 1 !!! этот метод вызывается при нажатии кнопки
self.gui_connections.btnComputeStartPressed.emit()
def _on_compute_started(self): # не вызывается хотя соединено. !!! 5 !!!
print("Started <>")
self.start_work_button.setDisabled(True)
ApplicationContentWidget:
python
def __init__(...):
self.gui_connections.btnComputeStartPressed.connect(self.on_start_pressed) # соединяю btnComputeStartPressed с
def on_start_pressed(self): # !!! 2 !!!
cur_widget = self.stacked_widget.currentWidget()
cur_widget.process_pressed() # вызывает process_pressed из T2IWidget
T2IWidget:
python
def process_pressed(self): # !!! 3 !!!
params = {
"prompt": self.promt_text.text(),
"negative_prompt": self.negative_text.toPlainText()
}
self.worker_thread = QThread()
self.worker = Text2ImageWorker(self.webapi, params)
self.worker.moveToThread(self.worker_thread)
self.worker_thread.started.connect(self.worker.start)
self.worker.finished.connect(self.worker_thread.quit)
self.worker.finished.connect(self._on_worker_finished)
self.worker_thread.start()
self.progress_worker_thread = QThread()
self.progress_worker = ProgressCheckerWorker(self.webapi)
self.progress_worker.moveToThread(self.progress_worker_thread)
self.progress_worker_thread.started.connect(self.progress_worker.start)
self.progress_worker.finished.connect(self.progress_worker_thread.quit)
self.progress_worker_thread.start()
self.gui_connections.computeStarted.emit() # не работает !!! 4 !!!
Почему оно по началу отрабатывает но дальше сигнал computeStarted не хочет работать?
Это что за манускрипт)
Разобрался кстати, оказалось что синглтон это какой-то не синглтон в питоне. Начал передовать по иерархии этот класс с соединениями и все заработало. Хотя проверял инстансы у всех объектов соединение и адрес был один и тот же у всех. Тогда почему не работают слоты не понятно =/
Обсуждают сегодня