仅在第一页将 QWizard.NextButton 连接到自定义方法
Connect QWizard.NextButton to custom method only on the first page
我有一个三页向导。第一页是 BasicSettings()
,第二页是 InstallPackages()
,最后一页是 Summary()
。
我想让第一页的Next按钮先执行一个名为execute_venv_create()
的方法,然后调用下一页。在接下来的页面中,Next 按钮应该像往常一样工作。
为此,我将 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 按钮按我的预期工作,它调用该方法并切换到下一页。但是,在第二页 InstallPackages()
上,如果我单击 下一步。
,GUI 会崩溃
这是将 QWizard
按钮连接到自定义方法的正确方法吗?还是无法使用 QWizardPages
中的向导按钮?
如何将 QWizard.NextButton
连接到特定 QWizardPage
的自定义方法,并使按钮在后续页面上正常运行?
你的方法是正确的,但你必须使用QWizard object associated with the page that can be obtained through the wizard()
方法:
def execute_venv_create(self):
# do something, then display an info message
QMessageBox.information(self, "Done", "message text")
next_button = self.wizard().button(QWizard.NextButton)
next_button.disconnect()
next_button.clicked.connect(self.wizard().next)
我有一个三页向导。第一页是 BasicSettings()
,第二页是 InstallPackages()
,最后一页是 Summary()
。
我想让第一页的Next按钮先执行一个名为execute_venv_create()
的方法,然后调用下一页。在接下来的页面中,Next 按钮应该像往常一样工作。
为此,我将 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 按钮按我的预期工作,它调用该方法并切换到下一页。但是,在第二页 InstallPackages()
上,如果我单击 下一步。
这是将 QWizard
按钮连接到自定义方法的正确方法吗?还是无法使用 QWizardPages
中的向导按钮?
如何将 QWizard.NextButton
连接到特定 QWizardPage
的自定义方法,并使按钮在后续页面上正常运行?
你的方法是正确的,但你必须使用QWizard object associated with the page that can be obtained through the wizard()
方法:
def execute_venv_create(self):
# do something, then display an info message
QMessageBox.information(self, "Done", "message text")
next_button = self.wizard().button(QWizard.NextButton)
next_button.disconnect()
next_button.clicked.connect(self.wizard().next)