Шаг 266.
Библиотека PyQt5.
Диалоговые окна. Окно с индикатором хода процесса
На этом шаге мы рассмотрим cоздание такого окна.
Класс QProgressDialog реализует диалоговое окно с индикатором хода процесса и кнопкой Cancel (рисунок 1). Иерархия наследования для класса QProgressDialog выглядит так:
(QObject, QPaintDevice) - QWidget - QDialog - QProgressDialog
Форматы конструктора класса QProgressDialog:
<Объект> = QProgressDialog([parent=None][, flags=0])
<Объект> = QProgressDialog(<Текст над индикатором>, <Текст на кнопке Cancel>,
<Минимум>, <Максимум>[,parent=None][, flags=0])
Значения минимума и максимума должны быть заданы в виде целых чисел. Если в параметре parent указана ссылка на родительское окно, то диалоговое окно будет центрироваться относительно
родительского окна, а не относительно экрана. Параметр flags задает тип окна (см. 25 шаг).
Приведем небольшой пример, визуально демонстрирующий это окно:
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
def on_clicked():
pdialog = QtWidgets.QProgressDialog("Операция выполняется", "Отмена",
1, 100, parent=window)
pdialog.setValue(55)
pdialog.show()
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget() # Родительский компонент - окно
window.setWindowTitle("Вывод индикатора хода процесса")
# Назначаем обработчиками функции
button1 = QtWidgets.QPushButton("Индикатор процесса")
grid = QtWidgets.QGridLayout() # Создаем сетку
grid.addWidget(button1, 0, 0) # Добавляем компоненты
button1.clicked.connect(on_clicked)
window.setLayout(grid)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять
здесь.

Рис.1. Окно с индикатором хода процесса
Класс QProgressDialog наследует все методы базовых классов и дополнительно определяет следующие методы (здесь приведены только основные - полный их список доступен на странице
https://doc.qt.io/qt-5/qprogressdialog.html):
- setValue (<Значение>) - задает новое значение индикатора, которое должно представлять собой целое число. Если диалоговое
окно является модальным, при установке значения автоматически вызывается метод processEvents() объекта приложения. Метод является слотом;
- value () - возвращает текущее значение индикатора в виде целого числа;
- setLabelText (<Текст над индикатором>) - задает надпись, выводимую над индикатором. Метод является слотом;
- setCancelButtonText (<Текст на кнопке Cancel>) - задает надпись для кнопки Cancel. Метод является слотом;
- setRange (<Минимум>, <Максимум>), setMinimum (<Минимум>) и setMaximum (<Максимум>) -
задают минимальное и максимальное значения в виде целых чисел. Если оба значения равны нулю, то внутри индикатора будут постоянно по кругу перемещаться сегменты,
показывая ход выполнения процесса с неопределенным количеством шагов. Методы являются слотами;
- setMinimumDuration (<Значение>) - задает промежуток времени в миллисекундах перед отображением окна (задается целым числом - значение по умолчанию: 4000).
Окно может быть отображено ранее этого срока при установке значения. Метод является слотом;
- reset () - сбрасывает значение индикатора. Метод является слотом;
- cancel () - имитирует нажатие кнопки Cancel. Метод является слотом;
- setLabel (<QLabel>) - позволяет заменить объект надписи;
- setBar (<QProgressBar>) - позволяет заменить объект индикатора;
- setCancelButton (<QPushButton>) - позволяет заменить объект кнопки;
- setAutoClose (<Флаг>) - если в качестве параметра указано значение True, то при сбросе значения окно скрывается;
- setAutoReset (<Флаг>) - если в качестве параметра указано значение True, при достижении максимального значения будет автоматически произведен сброс;
- wasCanceled () - возвращает значение True, если была нажата кнопка Cancel.
Класс QProgressDialog поддерживает сигнал canceled(), который генерируется при нажатии кнопки Cancel.
Со следующего шага мы начнем рассматривать создание многостраничного мастера.
Предыдущий шаг
Содержание
Следующий шаг