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

Cztery Progressbar przy 0%, 35%, 70% i 100%
Rzeczywiste stany tego samego widżetu o różnych wartościach value. Przykład wyglądu w środowisku kursu. Czcionki, rozmiary i motywy mogą się nieco różnić w zależności od systemu operacyjnego.
progressbar.py
progress = ttk.Progressbar(root, mode="determinate", maximum=100, value=0)
progress.pack(fill="x")

def obnovit_progress(procent):
    progress["value"] = procent
ModeKiedy używać
determinatezna dokładną liczbę etapów/procent ukończenia
indeterminateprace 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 z trzema zakładkami: Ogólne, Wygląd, Pliki — pierwsza jest aktywna
trzech zakładkach, aktywne jest "Ogólne" z polem "Autosave" w środku. Przykład pojawienia się w środowisku kursu. Na twoim systemie operacyjnym czcionki, rozmiary i motywy mogą się nieco różnić.
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
Otwórz praktykę →