Шаг 269.
Библиотека PyQt5.
Диалоговые окна. Создание многостраничного мастера. Класс QWizardPage

    На этом шаге мы рассмотрим назначение, иерархию наследования, формат конструктора, основные свойства и пример использования этого компонента.

    Класс QWizardPage описывает одну страницу в многостраничном мастере. Его иерархия наследования такова:

  (QObject, QPaintDevice) - QWidget - QWizardPage 

    Формат конструктора класса QWizardPage:

  <Объект> = QWizardPage([parent=None])

    Класс QWizardPage наследует все методы базовых классов и, помимо них, поддерживает также следующие методы (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qwizardpage.html):

    Приведем простейший пример использования рассмотренных компонентов.

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtCore
import sys

# Функция создания страницы регистрации
def createRegistrationPage():
    # Создание страницы регистрации
    page = QtWidgets.QWizardPage()
    page.setTitle("Регистрация")

    label = QtWidgets.QLabel("Здесь Вы регистрируетесь.")
    label.setWordWrap(True)

    layout = QtWidgets.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)

    return page

# Функция создания начальной страницы
def createIntroPage():
    page = QtWidgets.QWizardPage()
    page.setTitle("Начало")

    label = QtWidgets.QLabel("На следующей странице Вам нужно будет 
           зарегистрироваться.")
    label.setWordWrap(True)

    layout = QtWidgets.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)

    return page

# Функция создания завершающей страницы
def createConclusionPage():
    page = QtWidgets.QWizardPage()
    page.setTitle("Результат")

    label = QtWidgets.QLabel("Вы успешно зарегистрировались. Хорошего дня!")
    label.setWordWrap(True)

    layout = QtWidgets.QVBoxLayout()
    layout.addWidget(label)
    page.setLayout(layout)

    return page

if __name__ == '__main__':

    import sys

    app = QtWidgets.QApplication(sys.argv)

    wizard = QtWidgets.QWizard()
    wizard.addPage(createIntroPage())
    wizard.addPage(createRegistrationPage())
    wizard.addPage(createConclusionPage())

    wizard.setWindowTitle("Простейший Wizard")
    wizard.show()

    sys.exit(app.exec_())
Архив с файлом можно взять здесь.

    Результат работы приложения:


Рис.1. Результат работы приложения

    Прокомментируем полученный результат.

    Здесь создается три страницы мастера; каждой странице соответствует отдельная функция. По структуре эти функции одинаковы: создается страница, которая является экземпляром класса QWizardPage(). Затем настраивается внешний вид страницы, после чего созданная страница возвращается из функции.

    В основной части создается объект класса QWizard() с именем wizard и методом addPage() в него добавляются возвращаемые из функций страницы. Затем можно задать параметры объекта wizard, после чего отобразить его на экране.

    Со следующего шага мы начнем рассматривать создание SDI- и MDI-приложений.




Предыдущий шаг Содержание Следующий шаг