我有一个文件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
方法。
我尝试从向导中发出pyqtSignal()
并将其连接到UiMainWindow
的populate_table()
方法,但似乎没有收到信号。我在@pyqtSlot()
上使用了populate_table()
装饰器,但是那也不起作用。
但是,从我连接到main_ui.py
的自定义类inside populate_table()
发出信号可以正常工作。但是没有收到来自wizard.py
内部类的信号。
我的问题:
是否可以将[来自一个模块中的类的信号]]连接到[另一个模块中的类的方法?]
我有一个文件向导。py:MyWizard(QWizard)类:def __init __(self):super().__ init __()#... class PageOne(QWizardPage):def __init __(self):super().__ init__ ()...
如@Heike所建议,信号必须在MyWizard
中定义,而不是在FinalPage
中定义。