我有一个三页向导。第一页是BasicSettings()
,第二页是InstallPackages()
,最后一页是Summary()
。
我希望第一页上的Nextexecute_venv_create()
按钮首先执行一个名为的方法,然后调用下一页。在接下来的页面中,“下一步”按钮应该像往常一样运行。
为此,我将Next按钮连接成execute_venv_create()
这样:
class VenvWizard(QWizard):
"""The wizard class."""
def __init__(self):
super().__init__()
# ...
class BasicSettings(QWizardPage):
"""This is the first page."""
def __init__(self):
super().__init__()
# ...
def initializePage(self):
next_button = self.wizard().button(QWizard.NextButton)
next_button.clicked.connect(self.execute_venv_create)
def execute_venv_create(self):
# do something, then display an info message
QMessageBox.information(self, "Done", "message text")
问题当然是每次单击Next时都会调用该方法,因此我尝试断开按钮并以这种方式将其重新连接到该QWizard.next()
方法:
class InstallPackages(QWizardPage):
"""This is the second page."""
def __init__(self):
super().__init__()
# ...
def initializePage(self):
next_button = self.wizard().button(QWizard.NextButton)
next_button.disconnect()
next_button.clicked.connect(QWizard.next)
在第一页上,Next按钮按我的预期工作,它调用方法并切换到下一页。但是,在第二页上,如果我单击NextInstallPackages()
,GUI 会崩溃。
这是将QWizard
按钮连接到自定义方法的正确方法还是无法使用向导按钮QWizardPages
?
如何将 连接QWizard.NextButton
到特定的自定义方法QWizardPage
并使按钮在以下页面上正常运行?