Rozdział 17 · Wydarzenia głębiej
Event, callback, command i binding
„Tkinter przyciski to gra”
Kto wywołuje on_click()?
Porównajmy dwa znane sposoby uzyskania akcji od użytkownika.
posledovatelno.py
imya = input(„Jak masz na imię?”)
print(f"Cześć, {imya}!")
Wszystko jest tu proste: sam program, w dobrze znanym wierszu kodu, pyta i czeka na odpowiedź.
gui.py
def on_click():
print(„Przycisk naciśnięty”)
button = ttk.Button(root, text="OK", command=on_click)
Kto dzwoni on_click()? Nie my — nie w kodzie
Smyczki on_click(). Funkcję można wykonać w sekundę,
za godzinę lub nigdy, w zależności od tego, czy użytkownik naciśnie przycisk.
swój kod
rejestruje callback
czeka / przetwarza
↓Pętla Zdarzeń
↓
działanie użytkownika
↓
Tk powoduje callback
↓
twój kod jest wykonywany
↓
powrót do pętli zdarzeń
Odpowiedź
Callback przyczyny Tk system wydarzeń — w momencie, gdy następuje odpowiadająca mu akcja użytkownika (lub inne zdarzenie). Nie Twój kod, nie interpreter Python sam w sobie.
Event, callback, command binding to cztery różne słowa
| Termin | Co to jest |
|---|---|
| EVENT (wydarzenie) | Fakt: coś się wydarzyło — klik, naciśnięcie klawisza, najechanie kursorem |
| CALLBACK (nawiązanie do powrotu) | Funkcja wywołana W ODPOWIEDZI na zdarzenie |
| COMMAND (drużyna) | Wysokopoziomowy hak dla konkretnego widżetu dla jego głównej akcji (np. kliknięcie Button) |
| BINDING (wiązanie) | Powiązanie między zdarzeniem (sekwencją) a callback-funkcją |
Są ze sobą powiązane, ale nie wymienne
Wydarzenie to TO, co się wydarzyło. Callback to funkcja, która ZAREAGUJE. Command to przypadek szczególny, specyficzny dla konkretnego widżetu. Binding to mechanizm, który łączy wydarzenie z callbackiem. Mieszanie tych słów jest źródłem zamieszania w wyjaśnianiu własnego kodu.
Praktyka: klasyfikacja event/callback/command/binding
Automatyczna walidacja — kategoryzacja przykładów krótkich kodów według tych czterech terminów