Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter

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:

Twój kodobiekty i metodyPythontkintermoduł standardowybibliotekiTcl/TkGUI-toolkitokno systemu operacyjnegonatywny interfejs
tkinter jest pomostem między Python a środowiskiem systemowym Windows, a nie GUI od nowa wymyślonym.

Check: Czy Tkinter dostępny?

Nie każda instalacja Python musi mieć środowisko pracy Tk. Szybka diagnoza:

proverka_tkinter.py
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

pervoe_okno.py
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.

Tk (root)— (stan oknaprzechowywane w środku)title(text)geometry(„SxW”minsize(w, h)configure(...)protocol(...)after(...)destroy()mainloop()
root jest przykładem Tk z własnymi metodami; jest to OOP rozdziału 14 w prawdziwej bibliotece.
root — powszechne konwencje nazewnictwa
Główne okno jest zwykle nazywane root („rdzeń”
Zazwyczaj jeden root na aplikację
W zwykłym zastosowaniu, jeden cel 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.

Praktyka: Stwórz pierwsze okno
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →