У меня есть файл wizard.py
:
class MyWizard(QWizard):
def __init__(self):
super().__init__()
# ...
class PageOne(QWizardPage):
def __init__(self):
super().__init__()
# ...
class FinalPage(QWizardPage):
populateTable = pyqtSignal()
def __init__(self):
super().__init__()
# ...
def initializePage(self):
finish_button = self.wizard().button(QWizard.FinishButton)
finish_button.clicked.connect(self.populateTable.emit)
и другой файл main_ui.py
:
import wizard
class UiMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.table = QTableView(self)
# ...
self.my_wizard = wizard.MyWizard()
self.my_wizard.exec_()
# ...
self.final_page = wizard.FinalPage()
self.final_page.connect(self.populate_table)
@pyqtSlot()
def populate_table(self):
# fill some data into self.table
Модуль main_ui
импортирует модуль wizard
и запускает мастер.
После запуска мастера я хочу вызывать метод populate_table()
в main_ui.py
каждый раз, когда закрываю мастер на последней странице, нажимая кнопку мастера sh.
Я попытался испустить pyqtSignal()
из мастера и подключить его к методу UiMainWindow
populate_table()
, но, похоже, он не получает сигнал. Я использовал декоратор @pyqtSlot()
на populate_table()
, но это тоже не работает.
Однако передача сигнала из пользовательского класса внутри main_ui.py
, к которому я подключился populate_table()
, работает нормально. Но сигнал от класса внутри wizard.py
не принимается.
Мой вопрос:
Можно ли подключить сигнал из класса в одном модуле к методу класса в другом модуле ?