如何将页面的功能连接到 qwizard 的下一步按钮?



我一直在查看此示例。我基于它编写了代码,但我仍然不知道如何连接Qwizard的下一个按钮。例如,我希望它每次单击下一个按钮时都可以打印页面的名称和号码。与完成按钮相同时,单击完成时,我希望它打印"完成!"在控制台上,主要知道如何连接这些按钮以在其中一个页面中执行函数。

您可以通过函数{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

相关内容

最新更新