如何将pyqtSignal从一个模块内的类连接到另一个模块内的类中的pyqtSlot?

问题描述 投票:0回答:1

我有一个文件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()并将其连接到UiMainWindowpopulate_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__ ()...

python pyqt pyqt5 signals-slots
1个回答
0
投票

如@Heike所建议,信号必须在MyWizard中定义,而不是在FinalPage中定义。

© www.soinside.com 2019 - 2024. All rights reserved.