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

时间:2016-12-27 06:24:10

标签: python python-2.7 pyqt pyqt4 wizard

我一直在关注this示例。我基于它编写了我的代码,但我仍然无法弄清楚如何连接qwizard的下一个按钮。例如,我希望每次单击下一个按钮时都打印页面的名称和编号。与完成按钮相同,点击完成后我想打印“完成!”在控制台上,主要是知道如何连接这些按钮以执行其中一个页面中的功能。

1 个答案:

答案 0 :(得分:2)

您可以通过功能{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