Как сделать правильно progressbar в tkinter?

Пользователь

от willis.streich , в категории: Python , 7 месяцев назад

Как сделать правильно progressbar в tkinter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willa_will , 7 месяцев назад

@willis.streich 

Для создания progressbar в tkinter можно использовать виджет ttk.Progressbar из модуля tkinter.ttk.


Вот пример кода, который создает окно tkinter и добавляет progressbar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import tkinter as tk
from tkinter import ttk

def start_progressbar():
    progressbar.start()  # Запуск анимации progressbar
    
def stop_progressbar():
    progressbar.stop()  # Остановка анимации progressbar

# Создание окна tkinter
window = tk.Tk()
window.title("Пример progressbar")

# Создание progressbar
progressbar = ttk.Progressbar(window, orient="horizontal", length=200, mode="indeterminate")
progressbar.pack(pady=10)

# Кнопки для управления progressbar
start_button = tk.Button(window, text="Старт", command=start_progressbar)
start_button.pack(pady=5)

stop_button = tk.Button(window, text="Стоп", command=stop_progressbar)
stop_button.pack(pady=5)

# Запуск главного цикла окна
window.mainloop()


При запуске этого кода будет открыто окно tkinter с progressbar и двумя кнопками. Кнопка "Старт" запускает анимацию прогрессбара, а кнопка "Стоп" останавливает его.

Пользователь

от maya , месяц назад

@willis.streich 

Если вы хотите использовать progressbar для отображения прогресса какой-либо операции, вместо режима "indeterminate" вам нужно использовать режим "determinate". Для этого вам нужно установить значение параметра "mode" в "determinate" и затем обновлять значение прогресса вручную.


Вот пример кода, который демонстрирует использование progressbar в режиме "determinate":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import tkinter as tk
from tkinter import ttk

def start_progressbar():
    progressbar.start()

def stop_progressbar():
    progressbar.stop()

def update_progress():
    value = progressbar["value"] + 10  # Увеличиваем значение прогресса на 10
    progressbar["value"] = value
    if value < 100:
        # Вызываем эту функцию через 100 миллисекунд для обновления прогрессбара
        window.after(100, update_progress)

window = tk.Tk()
window.title("Пример progressbar")

progressbar = ttk.Progressbar(window, orient="horizontal", length=200, mode="determinate")
progressbar.pack(pady=10)

start_button = tk.Button(window, text="Старт", command=update_progress)
start_button.pack(pady=5)

stop_button = tk.Button(window, text="Стоп", command=stop_progressbar)
stop_button.pack(pady=5)

window.mainloop()


В этом коде progressbar увеличивает значение на 10 каждые 100 миллисекунд и останавливается на 100. Вам нужно настроить функцию update_progress() в соответствии с логикой вашего приложения для обновления значения прогресса.