Задать вопрос
@Vasiliy_Ivanov

Как грамотно использовать progress bar в коде?

Доброго времени суток, я делаю программу которая скачивает видео с YouTube, но при использовании progress bar он не обновляется в момент скачивания видео, а показывает полную загрузку только в конце. Использую библиотеки pytube и tkinter.
Вот весь код:
import pytube
from threading import Thread
import tkinter as tk
from tkinter import ttk

win = tk.Tk()
win.geometry('250x50')

file_size = 0


def progress(stream=None, chunk=None, remaining=0):
    file_downloaded = (file_size - remaining)
    per = (file_downloaded / file_size) * 100
    pb.config(value=format(per))


def download():
    global file_size
    video_url = 'ссылка на видео'
    save_path = 'C:\\Users\\parfe\\Desktop'

    video = pytube.YouTube(video_url, on_progress_callback=progress).streams.filter(res='720p', file_extension='mp4', progressive=True).desc().first()
    file_size = video.filesize
    video.download(save_path)


def start():
    thread = Thread(target=download)
    thread.start()


pb = ttk.Progressbar(win, length=200)
pb.pack()

tk.Button(win, text='Start', command=start).pack()

win.mainloop()
  • Вопрос задан
  • 525 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Тебе нужно дать ткинтеру шанс перерисоваться, и обработать другие оконные сообщения.

pb.config(value=format(per))
win.update_idletasks()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы