Rozdział 17 · Projekt: „Kółko-krzyżyk”

Event Binding – Dynamiczne tworzenie aplikacji!

command nie jest jedynym sposobem reagowania na działania użytkownika: bind() daje dostęp do wszelkiego rodzaju wydarzeń.

W rozdziale 16 przyciski reagowały na kliknięcie poprzez parametr command jest najczęstszym, ale nie jedynym sposobem powiązania kodu z akcją użytkownika. Wiązanie zdarzeń (.bind()) pozwala reagować na cokolwiek: naciśnięcie klawisza, ruch myszy, najechanie kursorem.

privyazka_sobytij.py
import tkinter as tk

root = tk.Tk()
label = tk.Label(root, text=„Naciśnij dowolny klawisz”, font=("Arial", 14))
label.pack(padx=20, pady=20)

def na_klavishu(event):
    label.config(text=f"Kliknąłeś: {event.keysym}")

root.bind("<Key>", na_klavishu)
root.mainloop()

Gdy callback zarejestrowana przez .bind(), Tkinter przekazuje obiekt do niego Event szczegóły dotyczące wydarzenia: który klawisz jest naciśnięty (event.keysym), gdzie klikała mysz i tak dalej dalej. Ta zasada dotyczy .bind(): callback przekazany do command= (jak w rozdziale 16) zwykle nazywa się bez Event dopełnienia — Rozdział 17.8 szczegółowo wyjaśni różnicę.

Przyda się w rozdziale 19
Ta sama idea — powiązać klawisz z funkcją — powróci w rozdziale 19: wąż będzie reagować na naciśnięcia klawiszy ze strzałkami. W Turtle do tego jest własny, prostszy interfejs — screen.listen() oraz screen.onkeypress(), — ale zasada jest ta sama.
Praktyka: wiązanie zdarzeń klawiatury
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →