I have been looking at this example. I wrote my code based on it but I still can't figure out how to connect the qwizard's next button. For example, I'd like it to print the page's name and number everytime the next button is clicked. Same with the finish button, when finish is clicked I would like it to print "finish!" on the console, mainly to know how to connect those buttons to execute a function in one of the pages.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You can get the buttons through the function {your wizard}.button({type button})
, where button types can be:
- 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
Code:
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_())
Output:
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