Tkinter — wszystko poprawnie skonfigurowane!
Pierwsza prawdziwa aplikacja okienkowa — i przejście od sekwencyjnego wykonania do modelu opartego na zdarzeniach.
Dotychczas wszystkie programy albo wyświetlały tekst w terminalu (rozdziały 1–5, 8–15), albo rysowały
na płótnie Turtle (rozdziały 6–7, 12). Program terminalowy wykonuje się łańcuch znaków dla
struna: robi krok, czeka na wejścia przez input(), czy
Kolejnym krokiem jest ciągłe sterowanie programem. Aplikacja okienkowa jest projektowana inaczej: buduje się
interfejs raz, a potem czeka, aż użytkownik podejmie działanie i reaguje na nie w
dowolnej kolejności — użytkownik może kliknąć dowolny przycisk, wpisać tekst w dowolne pole,
zmienić rozmiar okna. To nazywa się Programowanie zdarzane
(event-driven programming), a ten model omówimy szczegółowo w sekcjach 16.9–16.10.
Moduł dla aplikacji okienkowych nazywa się tkinter jest interfejs
Python do biblioteki graficznej Tcl/Tk i lubi turtle, wchodzi w
standardową dostawę Python:
Check: Czy Tkinter dostępny?
Nie każda instalacja Python musi mieć środowisko pracy Tk. Szybka diagnoza:
python -m tkinter
Jeśli Tkinter i Tk są dostępne — pojawi się małe okno testowe. Jeśli pojawi się błąd importu lub okno się nie otwiera — z lokalną instalacją Python/Tk trzeba poradzić sobie osobno (w sprawdzonych instrukcjach dla twojego systemu operacyjnego), zanim przejdziesz dalej w tym rozdziale.
Pierwsze okno
import tkinter as tk
root = tk.Tk()
root.title(„Moja pierwsza aplikacja”)
root.mainloop() # rozpoczyna pętlę zdarzeń
tk.Tk() tworzy główne okno aplikacji — coś w rodzaju
turtle.Screen() stworzył płótno do malarstwa. To jest bezpośrednie powiązanie z
Rozdział 14: Rezultat tk.Tk() jest regularnym obiektem Python- z własnym
metodami.
root („rdzeń”Tk() na cały proces. Dla dodatkowych okien (ustawienia, dialogi) używa się tk.Toplevel(...) (sekcja 16.20), a nie drugi Tk().mainloop() nie jest „zamrożeniem”
root.mainloop() uruchamia cykl, który aktywnie obsługuje
zdarzenia: kliknięcia, wprowadzanie tekstu, zmianę rozmiaru okna. Program nie „zawiesza się” i nie „zasypia” —
czeka i reaguje, pozostając responsywny, aż zostanie zamknięty. Omówimy to szczegółowo
w rozdziale 16.10.