Как подключить кнопку PYQT Qwizard next к методу - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать приложение и иметь с ним мастера. я создал GUI с pyqt5 и использовал библиотеку Qwizard для мастера. Я пытаюсь подключить метод со страницы qwizard к кнопке Next, но, похоже, не могу найти способ.

I wi sh, чтобы подключить метод в классе page2 с именем Next button, я wi sh вызвать что-то, когда нажата следующая кнопка на этой странице.

Мой код:

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_())

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете подключить сигнал completeChanged () к вашему методу. Это должно сделать работу. Обратите внимание, что completeChanged () также генерируется при других обстоятельствах (например, при нажатии кнопки «Назад»). Поэтому убедитесь, что вы проверяете правильную кнопку в коде.

Попробуйте следующие изменения в коде для простой версии, вам позже понадобится усложнить next_btn, чтобы убедиться, что нажата правая кнопка:

class Page2(QWizardPage):
    def __init__(self):
        super().__init__()
        self.completeChanged.connect(self.next_btn)

    def next_btn(self):
        print("next")
...