Tkinter Progress Bar

Tkinter Progress Bar

Podczas pracy z GUIS często jest to świetna opcja zaprezentowania ilości procesu wykonanego w formie paska postępu. Ponieważ Tkinter jest biblioteką Python budującą GUI, zapewnia wbudowaną metodę łatwego budowania paska postępu. Ten przewodnik pokaże, jak nie tylko zbudować pasek postępu, ale także jak korzystać z dwóch różnych trybów i zmienić wartość paska postępu.

Jak zbudować pasek postępu w Python Tkinter?

Musisz zaimportować pakiet „TTK” i użyć jego metody ProgressBar ().

progvar = ttk.ProgressBar (framevar, orienta, długość, tryb)

W składni metody ProgressBar ():

  • Progvar: To zmienna, która zostanie użyta do dostępu do różnych atrybutów paska postępu po jego utworzeniu
  • Framevar: To zmienna tkinter tk, która jest ramką/panelem, na której wyświetlany byłby postęp
  • Orient: Ten argument zostanie użyty do zdefiniowania i ustawienia orientacji paska postępu
  • długość: Ten argument zostanie użyty do zdefiniowania i długości paska postępu
  • tryb: Argument trybu służy do ustawiania trybu na „determinuj” lub „nieokreślony”

Zbudujmy prosty pasek postępu w Tkinter, który postępuje o 10% po naciśnięciu przycisku za pomocą następującego kodu:

#Start poprzez importowanie bibliotek tkinter
Z Tkinter Import *
Z Tkinter Import TTK
#Po imporcie utwórz ramkę za pomocą metody TK ()
ramka = tk ()
rama.Tytuł („Linuxhint - Postępowy pasek”)
rama.Geometria („400x200”)
okno = ramka (ramka)
#Method, aby zwiększyć wartość postępu
def Pbar ():
progbar [„wartość”]+= 10
#Build ProgressBar
progbar = ttk.ProgressBar (ramka, orienta = pozioma, długość = 400, tryb = „determinate”)
Progbar.pakiet (Pady = 40)
#Build przycisk
btn = przycisk (ramka, text = "kliknij tutaj!", Command = PBAR)
Btn.pakiet (Pady = 10)
rama.główna pętla()

W tym kodowym fragmencie:

  • Najpierw zaimportuj pakiet „Tkinter”, a także pakiet „TTK”, który zawiera metodę ProgressBar ()
  • Utwórz ramkę za pomocą metody TK ()
  • Zdefiniuj metodę PBAR (), która wykorzystuje zmienną Postępu „Progbar”, aby uzyskać dostęp do atrybutu „Wartość” i zwiększa ją o 10
  • Utwórz zmienną „progbar” za pomocą metody ProgressBar () i ustaw orientację na poziomy i tryb, aby określić
  • Na koniec utwórz przycisk, który wywołuje metodę PBAR () w celu zwiększenia wartości paska postępu.

Kiedy ten fragment kodu jest wykonywany, tworzy następujące okno Tkintera na komputerze:

Jak widać w wyjściowym GIF, utworzono pasek postępu i postępował po kliknięciu przycisku. Jednak po tym, jak pasek postępu naciśnie maksymalną długość, nie zachodzi dalsza zmiana po naciśnięciu przycisku.

Jak sprawić, by Bar Progress Bar w tę iz powrotem w Tkinter Python?

Aby pasek postępu poszedł tam iz powrotem po naciśnięciu przycisku, musisz użyć „nieokreślonego” paska postępu. Z „nieokreślonym” paskiem postępu, celem nie jest pokazanie procentu pracy wykonanej przez proces. Raczej celem jest jedynie prezentacja, że ​​akcja/zdarzenie jest w trakcie.

Aby utworzyć nieokreślony pasek postępu, po prostu zmień argument trybu w metodzie ProgressBar (), aby „nieokreślić”:

progbar = ttk.ProgressBar (ramka, orienta = pozioma, długość = 400, tryb = „determinate”)

Umieść ten wiersz w poprzednim przykładzie, wykonaj program, a wytworzy on następujące okno Tkinter:

Jak widać w wyjściowym GIF, nieokreślony pasek postępu nie zatrzymał.

Jak zresetować pasek postępu w Python Tkinter?

Aby zresetować wartość paska postępu, po prostu użyj zmiennej paska postępu, aby uzyskać dostęp do atrybutu „Wartość” i ustaw jego wartość równą zero. Dobrą praktyką jest zresetowanie wartości paska postępu po naciśnięciu przycisku.

Aby to zademonstrować, weź ten zmodyfikowany kod z pierwszego przykładu:

Z Tkinter Import *
Z Tkinter Import TTK
#Po imporcie utwórz ramkę za pomocą metody TK ()
ramka = tk ()
rama.Tytuł („Linuxhint - Postępowy pasek”)
rama.Geometria („400x200”)
okno = ramka (ramka)
#Method, aby zwiększyć/zresetować wartość postępu
def Pbar ():
progbar [„wartość”]+= 10
def ResetPbar ():
progbar [„wartość”] = 0
#Build ProgressBar
progbar = ttk.ProgressBar (ramka, orienta = pozioma, długość = 400, tryb = „nieokreślony”)
Progbar.pakiet (Pady = 40)
#Build przyciski
btn = przycisk (ramka, text = "postęp", command = PBAR)
Btn.pakiet (Pady = 10)
btn2 = przycisk (ramka, text = "reset", command = resetPBar).pakiet (padx = 10)
rama.główna pętla()

Po wykonaniu tego kodu powoduje on następujące zachowanie okna Tkintera na komputerze:

Możesz zauważyć, że gdy tylko naciśnię przycisk „resetowania”, postęp jest resetowany do 0.

Wniosek

Paski postępów to świetny sposób na informowanie użytkownika końcowego o procentach ukończenia działania lub statusu wykonania. Aby zbudować pasek postępu w Tkinter, użyj metody Postępu Postępu () Pakiet „TTK” i przejść wartości dla ramki, orientacji, długości i trybu. Aby zmienić wartość postępu paska postępu, uzyskaj dostęp do jego atrybutu „wartość” i zmień jego wartość zgodnie z wymogami.