...

Индикатор этапов программы что это

Отслеживаем прогресс выполнения в Python

Индикаторы прогресса (progress bar) — визуальное отображение процесса работы. Они избавляют нас от необходимости беспокоиться о том, не завис ли скрипт, дают интуитивное представление о скорости его выполнения и подсказывают, сколько времени осталось до завершения.

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

Используем Progress

Первым у нас идёт модуль Progress.

Всё, что от вас потребуется, это указать количество ожидаемых итераций, тип индикатора и вызывать функцию при каждой итерации:

import time from progress.bar import IncrementalBar mylist = [1,2,3,4,5,6,7,8] bar = IncrementalBar('Countdown', max = len(mylist)) for item in mylist: bar.next() time.sleep(1) bar.finish()

Есть индикаторы на любой вкус:

Используем tqdm

Следующей на очереди идёт библиотека tqdm.

Быстрый и расширяемый индикатор прогресса для Python и CLI

Всего один вызов функции понадобится для получения результата аналогичного предыдущему:

import time from tqdm import tqdm mylist = [1,2,3,4,5,6,7,8] for i in tqdm(mylist): time.sleep(1)

Само собой, в комплекте идёт куча настроек и опций.

Используем alive-progress

Ещё один вариант синтаксиса, побольше дефолтных анимаций, чем в предыдущих примерах:

from alive_progress import alive_bar import time mylist = [1,2,3,4,5,6,7,8] with alive_bar(len(mylist)) as bar: for i in mylist: bar() time.sleep(1)

GUI индикатор прогресса для скрипта

Иногда возникает необходимость предоставить конечному пользователю графический индикатор.

Сколько кода нужно, чтобы достигнуть такого результата? Немного:

import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] for i, item in enumerate(mylist): sg.one_line_progress_meter('This is my progress meter!', i+1, len(mylist), '-key-') time.sleep(1)

Индикатор в приложении PySimpleGUI

Рассмотрим реализацию индикатора в PySimpleGUI.

Вот как это сделать:

import PySimpleGUI as sg import time mylist = [1,2,3,4,5,6,7,8] progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')] ] outputwin = [ [sg.Output(size=(78,20))] ] layout = [ [sg.Frame('Progress',layout= progressbar)], [sg.Frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()] ] window = sg.Window('Custom Progress Meter', layout) progress_bar = window['progressbar'] while True: event, values = window.read(timeout=10) if event == 'Cancel' or event is None: break elif event == 'Start': for i,item in enumerate(mylist): print(item) time.sleep(1) progress_bar.UpdateBar(i + 1) window.close()

Заключение

Как видите, нет ничего сложного в добавлении информации о прогрессе выполнения: кода немного, а отзывчивость повышается очень сильно. Используйте индикаторы, чтобы больше никогда не гадать, завис ли процесс или нет!

  • progress bar
  • индикатор прогресса

Сведения об элементах управления индикатора выполнения

Индикатор выполнения — это окно, которое приложение может использовать для указания хода выполнения длительной операции.

Он состоит из прямоугольника, который анимируется по мере выполнения операции.

На следующем рисунке показан индикатор выполнения, который не использует визуальные стили.

Снимок экрана: индикатор выполнения, который добавляет прямоугольники в строку для обозначения хода выполнения

На следующем рисунке показан индикатор выполнения с использованием визуальных стилей. Внешний вид элемента управления зависит от операционной системы и выбранной темы. Дополнительные сведения см. в разделе Визуальные стили.

Снимок экрана: индикатор выполнения, который удлиняет анимированный зеленый прямоугольник для обозначения хода выполнения

Дополнительные сведения содержатся в следующих разделах.

  • Использование индикаторов выполнения
    • Диапазон и текущее положение
    • Обработка сообщений индикатора выполнения по умолчанию
    • Стиль области

    Использование индикаторов выполнения

    Индикатор выполнения можно создать с помощью функции CreateWindowEx , указав класс окна PROGRESS_CLASS . Этот класс окна регистрируется при загрузке библиотеки DLL общих элементов управления. Дополнительные сведения см. в разделе Общие элементы управления.

    Элемент управления также доступен на панели элементов Microsoft Visual Studio, где он называется Элемент управления хода выполнения.

    Диапазон и текущее положение

    Диапазон индикатора выполнения представляет всю длительность операции, а текущая позиция — ход выполнения операции приложением. Процедура окна использует диапазон и текущую позицию, чтобы определить процент индикатора выполнения для заполнения цветом выделения.

    Если значения диапазона не заданы, система устанавливает минимальное значение 0, а максимальное — 100. Диапазон можно настроить в соответствии с удобными целыми числами с помощью сообщения PBM_SETRANGE .

    Индикатор выполнения предоставляет несколько сообщений, которые можно использовать для задания текущей позиции. Сообщение PBM_SETPOS задает для позиции заданное значение. Сообщение PBM_DELTAPOS перемещает позицию, добавляя указанное значение в текущую позицию.

    Сообщение PBM_SETSTEP позволяет указать шаг приращения для индикатора выполнения. Впоследствии при отправке сообщения PBM_STEPIT на индикатор выполнения текущая позиция перемещается на указанный шаг. По умолчанию для шага задано значение 10.

    Обработка сообщений индикатора выполнения по умолчанию

    В этом разделе описываются сообщения, обрабатываемые процедурой окна для класса PROGRESS_CLASS .

    Сообщение Выполнена обработка
    WM_CREATE Выделяет и инициализирует начальную структуру.
    WM_DESTROY Освобождает все ресурсы, связанные с индикатором выполнения.
    WM_ERASEBKGND Рисует фон и границы индикатора выполнения.
    WM_GETFONT Возвращает дескриптор текущего шрифта. Индикатор выполнения в настоящее время не рисует текст, поэтому отправка этого сообщения не влияет на элемент управления.
    WM_PAINT Рисует индикатор выполнения. Если параметр wParam не равен NULL, элемент управления предполагает, что значение является HDC, и рисует с помощью этого контекста устройства.
    WM_SETFONT Сохраняет дескриптор в новый шрифт и возвращает дескриптор предыдущего шрифта. Индикатор выполнения в настоящее время не рисует текст, поэтому отправка этого сообщения не влияет на элемент управления.

    Стиль области

    Создав элемент управления индикатора выполнения со стилем PBS_MARQUEE , вы можете анимировать его таким образом, чтобы отображалось действие, но не указывалось, какая часть задачи завершена. Выделенная часть индикатора выполнения постоянно перемещается по длине индикатора. Вы можете запустить и остановить анимацию, а также управлять ее скоростью, отправив сообщение PBM_SETMARQUEE . Индикаторы выполнения не имеют диапазона или положения.

    На следующем рисунке показан индикатор выполнения в режиме области. Выделенная часть перемещается по панели.

    При подготовке материала использовались источники:
    https://habr.com/ru/articles/483400/
    https://learn.microsoft.com/ru-ru/windows/win32/controls/progress-bar-control

Оцените статью