Pyqt5 progressbar как привязать к программе
Перейти к содержимому

Pyqt5 progressbar как привязать к программе

  • автор:

Отслеживаем прогресс выполнения в 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
  • индикатор прогресса

Python-сообщество

[RSS Feed]

  • Начало
  • » GUI
  • » Прошу помощи со списком в Pyqt5

#1 Март 8, 2016 15:44:33

aiscy Зарегистрирован: 2015-06-17 Сообщения: 52 Репутация: 9 Профиль Отправить e-mail

Прошу помощи со списком в Pyqt5

Пытаюсь сделать приложение на pyqt5 для работы с yandex disk rest api, все было отлично, пока не наступила пора реализовывать виджет в виде списка со статусом загрузки файлов.

За основу взял этот интерфейс:

Как я понял, подобный список можно реализовать через QListWidget и вложить в него QListWidgetItem с QWidget, но не могу понять, как потом изменить один из элементов этого списка, чтобы, например, обновить прогресс бар.

Для обработки и загрузки каждого файла использую такого воркера:

class WorkerYandexUpload(QRunnable): def run(self): . m = MultipartEncoderMonitor.from_fields(fields='file': (open(self.file_path, 'rb'))>, callback=self.upload_callback) r = requests.post('http://httpbin.org/post', data=m, headers='Content-Type': m.content_type>) def upload_callback(self, m): self.signals.test_sign.emit(m.bytes_read) 

Отредактировано aiscy (Март 8, 2016 18:12:59)

Как использовать ProgressBar?

Author24 — интернет-сервис помощи студентам

Приветствую всех!
После длительного курения доков, Прохоренка, Бизли и помощи глубокоуважаемого Jabbson(огромное спасибо ему), мне таки удалось сделать то, что задумал. А именно, конвертер fb2 в plain text. Читалка в моем телефоне ничего другого не поддерживает.
Я конечно понимаю, что есть unoconv и xsltproc (про Calibre вообще молчу), но они тянут с собой много лишнего(для меня).
Просто нужна прога с одной функцией, новые знания и есть время.

Но не все хотелки смог осуществить.
1. Progress bar
2. При нажатии «отмена» в диалоговом окне — вылет(справлюсь сам)
3. При нажатии «save convert» БЕЗ загруженного файла — вылет(тоже сам)
Чтобы не засорять спойлерами и вставками кода, я просто дам ссылку на github:
Код здесь
Подскажите пожалуйста, где посмотреть, что читать по написанию функции ProgressBar (книги немаленькие, порой до минуты загружаются) для индикации загрузки файла, ибо google посылает меня туда, куда телят не гоняют. Ни одного подходящего решения я не нашел, а из тех что ВРОДЕ БЫ можно реализовать, все выше моего понимания
Может у кого есть готовый код.
Заранее спасибо!
Выглядит это так:

Вопросы с меткой [progress-bar]

Progress bar — элемент графического интерфейса пользователя, представляющий собой, в классическом виде, прямоугольную заполняющуюся панель для отображения хода выполнения какой либо задачи. При использовании данной метки обязательно указывайте язык программирования.

194 вопроса
Конкурсные
Неотвеченные

  • Конкурсные 0
  • Неотвеченные
  • Цитируемые
  • Рейтинг
  • Неотвеченные (мои метки)

19 показов

Проблема с прогресс баром в JQuery

В документации JQuery есть пункт про progressbar, но при использовании выдаёт ошибку. Что делать? Код: $( «.progress-bar» ).progressbar(); Ошибка: $(. ).progressbar is not a .

задан 26 июн 2023 в 9:33

ProgressBar от внешнего процесса

Прошу помощи в решении следующих вопросов: как прикрутить прогресс бар к внешнему процессу, например процессу, в котором происходит обработка списка элементов из базы данных, и как сделать так чтоб в .

задан 12 июн 2023 в 12:17
18 показов

Почему progress bar(Vaadin) не обновляется динамически при выполнении операции удаления из DB?

Файл загружается успешно. Метод deleteMsisdns — который выполняется асинхронно, отвечает за выполнение sql скрипта на удаление данных. Метод getDeletedCount — отвечает за мониторинг удаленных данных, .

задан 2 июн 2023 в 10:50
57 показов

Как запустить ProgressBar, используя данные из стороннего пакета

Дано: Пакет, написанный на С# и прогнанный через генератор Java. Передан мне в виде папки с названием, которую я просто скопировал в проект. Там есть функция, которая вызывается например так: .

задан 7 апр 2023 в 7:04
57 показов

Преобразовать прогресс-бар в виде линии в кружок

Есть вот такой вот прогресс-бар в виде линии

Python progress bar в GET-запросах

Мне нужно одновременно отправить 1000 GET-запросов с помощью multiprocessing и через библиотеку tqdm отслеживать уже отправленные запросы Проблема состоит в том, что я работаю со списком и при .

задан 13 мар 2023 в 9:35
689 показов

Как заполнять progress bar по мере загрузки файла?

Как заполнять progress bar по мере загрузки файла? У нас есть файл, допустим он весит 3.67mb — это 100 процентов, как найти сколько 1 процент от этого числа каждый школьник справиться. Но как .

задан 17 фев 2023 в 16:28
96 показов

Круглый прогресс бар с процентом сверху текущего положения бара

Решил сделать круглый прогресс бар, сверху текущего положения бара должен находиться текущий процент. Вот пример (Цвет текста на ваше усмотрение, я сделал его чёрным, чтобы его было лучше видно): .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *