3 ページのウィザードがあります。最初のページはBasicSettings()
、2 ページ目はInstallPackages()
、最後のページはSummary()
です。
最初のページの [次へ] ボタンで、名前付きのメソッドを最初に実行してからexecute_venv_create()
、次のページを呼び出すようにします。次のページでは、[次へ] ボタンは通常どおり動作するはずです。
このために、次のボタンを次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")
問題は、もちろん、[次へ] をクリックするたびにメソッドが呼び出されるため、ボタンを切断して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)
最初のページでは、 [次へ] ボタンが期待どおりに機能し、メソッドが呼び出されて次のページに切り替わります。しかし、2 ページ目で [次へInstallPackages()
] をクリックすると、GUI がクラッシュします。
これはボタンをカスタム メソッドに接続する正しい方法ですか、それともQWizard
からウィザード ボタンを使用することはできませんQWizardPages
か?
QWizard.NextButton
を特定のカスタム メソッドに接続QWizardPage
し、次のページでボタンを通常どおりに動作させるにはどうすればよいですか?