Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter
Progressbar i tabletki Notebook
Postęp powinien być sprawiedliwy, a zakładki naturalnym sposobem na dużą ilość personalizacji.
Progressbar to postęp, a nie dekoracja
progressbar.py
progress = ttk.Progressbar(root, mode="determinate", maximum=100, value=0)
progress.pack(fill="x")
def obnovit_progress(procent):
progress["value"] = procent
| Mode | Kiedy używać |
|---|---|
| determinate | zna dokładną liczbę etapów/procent ukończenia |
| indeterminate | prace są w toku, ale ich objętość nie jest znana z góry |
Nie fałszuj postępu, którego nie znasz
Jeśli aplikacja nie jest w stanie oszacować procentu ukończenia, użyj
mode="indeterminate" (pasek biegający) zamiast dowolnych liczb w determinate. Fałszywy postęp jest gorszy niż szczere „nie wiesz, ile jeszcze zostało”progressbar_indeterminate.py
progress = ttk.Progressbar(root, mode="indeterminate")
progress.pack(fill="x")
progress.start() # uruchamia animację taśmy biegnącej
# ... długa operacja ...
progress.stop() # zatrzymuje animację
indeterminate nie animuje się samodzielnie
Tworzenie
Progressbar(mode="indeterminate") nie uruchamia automatycznie animacji – ruch paska pełzającego zaczyna się dopiero po wyraźnym wywołaniu .start() i kończy się na .stop().Notebook — tabletki
notebook.py
vkladki = ttk.Notebook(root)
vkladki.pack(fill="both", expand=True)
obshaya_vkladka = ttk.Frame(vkladki)
vneshnij_vid_vkladka = ttk.Frame(vkladki)
fajly_vkladka = ttk.Frame(vkladki)
vkladki.add(obshaya_vkladka, text=„Generał”)
vkladki.add(vneshnij_vid_vkladka, text=„Wygląd”)
vkladki.add(fajly_vkladka, text=„Pliki”)
Każda zakładka jest regularną Frame, wewnątrz którego można niezależnie używać pack() lub grid()
— doskonale nadaje się do okna ustawień (rozdział 16.25). Na zrzucie ekranu powyżej widać dokładnie to,
co opisuje termin „zakładka” — przełączalny obszar treści w jednym oknie, a nie
kilka oddzielnych okien.
Praktyka: Progressbar i Notebook
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie