我一直在寻找这样的例子。 我写此基础上我的代码,但我仍然无法弄清楚如何连接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?