我怎样才能页面的功能连接到一个qwizard的下一个按钮?(How can I connect a

2019-09-26 22:46发布

我一直在寻找这样的例子。 我写此基础上我的代码,但我仍然无法弄清楚如何连接qwizard的下一个按钮。 例如,我想它打印页面的姓名和号码,每次下一个按钮被点击。 同样的,Finish按钮,单击完成时,我想它打印“完成!” 在控制台上,主要是为了了解如何连接这些按钮在一个页面中执行的功能。

Answer 1:

你可以通过函数来获取键{your wizard}.button({type button})其中按钮类型可以是:

  • QtGui.QWizard.BackButton
  • QtGui.QWizard.NextButton
  • QtGui.QWizard.CommitButton
  • QtGui.QWizard.FinishButton
  • QtGui.QWizard.CancelButton
  • QtGui.QWizard.HelpButton
  • QtGui.QWizard.CustomButton1
  • QtGui.QWizard.CustomButton2
  • QtGui.QWizard.CustomButton3

码:

from PyQt4 import QtGui


def createIntroPage():
    page = QtGui.QWizardPage()
    page.setTitle("Introduction")

    label = QtGui.QLabel("This wizard will help you register your copy of "
            "Super Product Two.")
    label.setWordWrap(True)

    layout = QtGui.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)

    return page


def createRegistrationPage():
    page = QtGui.QWizardPage()
    page.setTitle("Registration")
    page.setSubTitle("Please fill both fields.")

    nameLabel = QtGui.QLabel("Name:")
    nameLineEdit = QtGui.QLineEdit()

    emailLabel = QtGui.QLabel("Email address:")
    emailLineEdit = QtGui.QLineEdit()

    layout = QtGui.QGridLayout()
    layout.addWidget(nameLabel, 0, 0)
    layout.addWidget(nameLineEdit, 0, 1)
    layout.addWidget(emailLabel, 1, 0)
    layout.addWidget(emailLineEdit, 1, 1)
    page.setLayout(layout)

    return page


def createConclusionPage():
    page = QtGui.QWizardPage()
    page.setTitle("Conclusion")

    label = QtGui.QLabel("You are now successfully registered. Have a nice day!")
    label.setWordWrap(True)

    layout = QtGui.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)

    return page


def backprint():
    print("Action: back Page: " + wizard.currentPage().title())

def nextprint():
    print("Action: next Page: " + wizard.currentPage().title())

def commitprint():
    print("Action: commit Page: " + wizard.currentPage().title())

def finishprint():
    print("Action:finish Page: " + wizard.currentPage().title())

def cancelprint():
    print("Action:cancel Page: " + wizard.currentPage().title())

if __name__ == '__main__':

    import sys

    app = QtGui.QApplication(sys.argv)

    wizard = QtGui.QWizard()

    wizard.addPage(createIntroPage())
    wizard.addPage(createRegistrationPage())
    wizard.addPage(createConclusionPage())

    wizard.button(QtGui.QWizard.BackButton).clicked.connect(backprint)
    wizard.button(QtGui.QWizard.NextButton).clicked.connect(nextprint)
    wizard.button(QtGui.QWizard.CommitButton).clicked.connect(commitprint)
    wizard.button(QtGui.QWizard.FinishButton).clicked.connect(finishprint)
    wizard.button(QtGui.QWizard.CancelButton).clicked.connect(cancelprint)

    wizard.setWindowTitle("Trivial Wizard")
    wizard.show()
    print("Page :" + wizard.currentPage().title())

    sys.exit(wizard.exec_())

输出:

Page :Introduction
Action: next Page: Registration
Action: next Page: Conclusion
Action: back Page: Registration
Action: back Page: Introduction
Action: next Page: Registration
Action: next Page: Conclusion
Action:finish Page: Conclusion


文章来源: How can I connect a page's function to a qwizard's next button?