2016-12-27 3 views
0

Я искал пример this. Я написал свой код на основе этого, но я все еще не могу понять, как подключить следующую кнопку qwizard. Например, я бы хотел, чтобы он печатал имя и номер страницы каждый раз, когда нажимается следующая кнопка. То же самое с кнопкой завершения, когда нажата кнопка «Готово», мне бы хотелось, чтобы она печатала «финиш!». на консоли, в основном, чтобы знать, как подключить эти кнопки для выполнения функции на одной из страниц.Как подключить функцию страницы к следующей кнопке qwizard?

+0

это использовать некоторые 'QtGui.QWizardPage', так что, возможно, найдете документацию для этого класса: http: // do c.qt.io/qt-4.8/qwizardpage.html – furas

+0

Я читал документы. Все еще озадачен тем, как подключить функцию к кнопкам – answerSeeker

+0

@TatakaiWasumi попробуйте с моим кодом – eyllanesc

ответ

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 
+0

Я продолжаю получать: lambda: print ("Действие: назад Страница:" + wizard.currentPage(). Title())) ^ SyntaxError : недействительный синтаксис для всей функции лямбда. Я на python 2.7 – answerSeeker

+0

@TatakaiWasumi обновить мое решение – eyllanesc

+0

Еще раз спасибо. Я искал часы – answerSeeker

Смежные вопросы