Podsumowanie rozdziału: Zestaw narzędzi Tkinter
Od „program czeka na zdarzenia, nie w kolejności”
Wizualna lista kontaktowa widżetów
Zanim wybierzesz imię, pamiętaj, jak ono wygląda:










Zestaw narzędzi Tkinter
Sekwencja w ramach wydarzenia
Precyzyjne sformułowanie jest ważniejsze niż skuteczne sformułowanie: kod inicjalizacyjny nadal działa kolejno łańcuch znaków linia po linii, a każdy pojedynczy callback również jest wykonywany kolejno, gdy zostaje wezwany. To nie to się zmienia, ale ogólny model zarządzania: to właśnie pętla zdarzeń decyduje, która callback zostanie wywołana jako następna, w odpowiedzi na zdarzenie — a nie sam kod, idący w jednej ciągłej linii od góry do dołu.
co dalej
Teraz możemy budować root i drzewo widżetów, łączyć callback przez
command, układać formy przez pack
i adaptacyjny grid, przechowuj współdzielony stan w zmiennych Tk-,
Pokazuj dialogi, otwieraj/zapisuj pliki, umawiaj opóźnione połączenia przez
after() i złóż wszystko w klasę aplikacji z trwałością
ustawienia.
W rozdziale 17 („Projekt: gra „Kółko-krzyżyk” z Tkinter”) zbudujemy pełną grę — i poznamy bardziej ogólny mechanizm wiązania zdarzeń,
.bind("<Button-1>", ...), który reaguje na kliknięcie w dowolnym miejscu widżetu (na przykład na konkretnej komórce płótna), a nie tylko na zdefiniowaną akcję taką jak command przycisk.
Czego nauczyliśmy się w tym rozdziale
- Inicjalizacja i każdy callback nadal wykonywane są kolejno — zmienia się ogólny model zarządzania: pętla zdarzeń decyduje, który callback wywołać następny w odpowiedzi na wydarzenia.
root.mainloop()uruchamia pętlę zdarzeń zamiast „zawieszania”command=функцияkojarzy callback z widżetem — bez nawiasów po nazwie funkcji.- Każdy widget jest tworzony, konfigurowany i umieszczany osobno przez menedżera geometrii —
pack(),grid()lubplace(), ale bez mieszania pack/grid z jednym rodzicem. - ttk daje tematyczne widżety i stylizację przez
ttk.Style()— ale nie zastępuje tk.Text/Canvas/Menu. - zmienne Tk-zmienne (StringVar i inne) wiążą wiele widżetów z jedną wartością — i nie zastępują zwykłych zmiennych Python.
- messagebox i filedialog zwracają rzeczywiste wartości, które należy sprawdzić (w tym anulowanie), a nie zakładać.
after()planuje opóźnione lub powtarzające się połączenie bez blokowania —time.sleep()w callback zawiesza cały interfejs.- Logikę domeny warto pisać jako czyste funkcje, sprawdzane bez żadnego widgetu — callback tylko czyta dane wejściowe, wywołuje logikę i aktualizuje ekran.
- GUI- wykorzystują te same funkcje JSON+pathlib co Rozdział 15 – nic nowego.