Reputation: 67
Im trying to build an app and to have a wizard with it. i have created the GUI with pyqt5 and used the Qwizard libary for the wizard. im trying to connect a method from a qwizard page to the Next button but cant seem to find a way.
I wish to connect the method in class page2 called Next button , i wish to trigger something when next button on this page is clicked.
My code:
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QToolBar, QAction, QVBoxLayout, QHBoxLayout, QGridLayout, QLabel,\
QGroupBox, QWizard, QWizardPage, QPushButton, QLineEdit, QComboBox
import PyQt5.QtGui as QtGui
from PyQt5.QtGui import QFont
class App(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.left = 200
self.top = 200
self.width = 640
self.height = 480
self.title = "App"
self.setWindowTitle(self.title)
self.setWindowIcon(QtGui.QIcon("logo.ico"))
self.setGeometry(self.left, self.top, self.width, self.height)
self.toolbar = QToolBar("")
########################## ToolbarButtons ###################################
self.button_add = QAction("Add", self)
self.button_add.setIcon(QtGui.QIcon("add.ico"))
self.button_add.setStatusTip("Add stuff")
self.toolbar.addAction(self.button_add)
self.button_browse = QAction("Open", self)
self.button_browse.setIcon(QtGui.QIcon("folder.ico"))
self.button_browse.setStatusTip("Open stuff")
self.toolbar.addAction(self.button_browse)
self.button_save = QAction("Save", self)
self.button_save.setIcon(QtGui.QIcon("save.ico"))
self.button_save.setStatusTip("Save stuff")
self.toolbar.addAction(self.button_save)
self.button_settings = QAction("Settings", self)
self.button_settings.setIcon(QtGui.QIcon("settings.ico"))
self.button_settings.setStatusTip("Set stuff")
self.toolbar.addAction(self.button_settings)
self.window_layout = QGridLayout()
self.setLayout(self.window_layout)
self.wizard = WizardInit()
print("Test")
self.wizard.setWizardStyle(QWizard.ModernStyle)
self.show()
self.wizard.show()
class WizardInit(QWizard):
def __init__(self):
super().__init__()
self.setWindowTitle("Wizard")
self.resize(500, 500)
self.addPage(Page1())
self.addPage(Page2())
self.addPage(Page3())
class Page1(QWizardPage):
def __init__(self):
super().__init__()
class Page2(QWizardPage):
def __init__(self):
super().__init__()
def next_btn(self):
print("next")
class Page3(QWizardPage):
def __init__(self):
super().__init__()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
Upvotes: 0
Views: 1255
Reputation: 1029
You can connect the completeChanged() signal to your method. That should do the job. Note that completeChanged() is also emitted under other circumstances (when pressing the back button for example). So make sure you test for the right button in the code.
Try the following changes in the code for a simple version you will later need to make the next_btn more complicated to ensure the right button is clicked:
class Page2(QWizardPage):
def __init__(self):
super().__init__()
self.completeChanged.connect(self.next_btn)
def next_btn(self):
print("next")
Upvotes: 0