1

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し、次のページでボタンを通常どおりに動作させるにはどうすればよいですか?

4

1 に答える 1