PyQt has a QWizard class for creating a multipage wizard.
In the QWizard class, there is a method
registerField(<Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ>, [, property=None][,changedSignal=0]) which, as stated in the documentation:
"registers a property with which you can access the component value from any page of the wizard"
in the example below (listing from the book Prohorenok Python 3 ...) I get the value
print from page 2 = None even on the same page
How to get access to the field registered with registerField on another page of the wizard?
in the on_clicked () method of the Start class all values ββare printed without problems
from PyQt5 import QtWidgets import sys class MyPage1(QtWidgets.QWizardPage): def __init__(self, parent=None): QtWidgets.QWizardPage.__init__(self, parent) self.setTitle("ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 1") self.label1 = QtWidgets.QLabel("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 1") self.line1 = QtWidgets.QLineEdit() self.box1 = QtWidgets.QVBoxLayout() self.box1.addWidget(self.label1) self.box1.addWidget(self.line1) self.setLayout(self.box1) self.registerField("line1*", self.line1) class MyPage2(QtWidgets.QWizardPage): def __init__(self, parent=None): QtWidgets.QWizardPage.__init__(self, parent) self.setTitle("ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 2") self.setSubTitle("Π’Π΅ΠΊΡΡ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°") self.label2 = QtWidgets.QLabel("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 2") self.line2 = QtWidgets.QLineEdit() self.box2 = QtWidgets.QVBoxLayout() self.box2.addWidget(self.label2) self.box2.addWidget(self.line2) self.setLayout(self.box2) self.registerField("line2*", self.line2) temp = self.field('line2') print('print from page 2 = ', temp) class MyPage3(QtWidgets.QWizardPage): def __init__(self, parent=None): QtWidgets.QWizardPage.__init__(self, parent) self.setTitle("ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 3") self.setSubTitle("Π’Π΅ΠΊΡΡ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°") self.label3 = QtWidgets.QLabel("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ 3") self.line3 = QtWidgets.QLineEdit() self.box3 = QtWidgets.QVBoxLayout() self.box3.addWidget(self.label3) self.box3.addWidget(self.line3) self.setLayout(self.box3) self.registerField("line3*", self.line3) class MyWizard(QtWidgets.QWizard): def __init__(self, parent=None): QtWidgets.QWizard.__init__(self, parent) self.setWindowTitle("ΠΠΎΠΉ ΠΌΠ°ΡΡΠ΅Ρ") self.setWizardStyle(QtWidgets.QWizard.ClassicStyle) self.page1 = MyPage1() self.page2 = MyPage2() self.page3 = MyPage3() self.idPage1 = self.addPage(self.page1) self.idPage2 = self.addPage(self.page2) self.idPage3 = self.addPage(self.page3) class Start(): @staticmethod def on_clicked(): wizard = MyWizard(window) result = wizard.exec() if result == QtWidgets.QDialog.Accepted: print("ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Finish") print(wizard.field("line1")) print(wizard.field("line2")) print(wizard.field("line3")) else: print("ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Cancel, ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΠ°ΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ° <Esc>", result) start = Start() app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("ΠΠ»Π°ΡΡ QWizard") window.resize(300, 70) button = QtWidgets.QPushButton("ΠΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ...") button.clicked.connect(start.on_clicked) box = QtWidgets.QVBoxLayout() box.addWidget(button) window.setLayout(box) window.show() sys.exit(app.exec_())