Привязка событий — делаем приложения динамическими!
command — не единственный способ реагировать на действия пользователя: bind() открывает доступ к событиям любого рода.
В главе 16 кнопки реагировали на клик через параметр command
— это самый частый, но не единственный способ связать код с действием пользователя.
Привязка событий (.bind()) позволяет реагировать
на что угодно: нажатие клавиши, движение мыши, наведение курсора.
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Нажмите любую клавишу", font=("Arial", 14))
label.pack(padx=20, pady=20)
def na_klavishu(event):
label.config(text=f"Вы нажали: {event.keysym}")
root.bind("<Key>", na_klavishu)
root.mainloop()
Когда callback зарегистрирован через .bind(), Tkinter
передаёт ему объект Event с подробностями о произошедшем событии:
какая клавиша нажата (event.keysym), где кликнула мышь, и так
далее. Это правило именно для .bind(): коллбэк, переданный в
command= (как в главе 16), обычно вызывается без объекта Event —
раздел 17.8 разберёт разницу подробнее.
screen.listen() и screen.onkeypress(), — но принцип тот же самый.