Глава 17 · События глубже
Синтаксис событий Tk
<модификатор-тип-деталь> — не всегда нужны все три части сразу.
Анатомия последовательности событий
Строка вроде "<Control-Button-1>" — это не магическое
заклинание, а структура <модификатор-тип-деталь>, где
часть элементов может отсутствовать:
| Запись | Что означает |
|---|---|
<KeyPress> | любая клавиша нажата (то же, что <Key>) |
<Return> | конкретная клавиша Enter |
<Escape> | конкретная клавиша Escape |
<Button-1> | нажатие левой кнопки мыши |
<Enter> | курсор вошёл в границы виджета |
<Leave> | курсор покинул границы виджета |
<Control-r> | модификатор Control + клавиша r |
Не нужно запоминать всю грамматику Tk целиком
У Tk десятки поддерживаемых последовательностей событий. Для главы 17 достаточно этого небольшого набора — при необходимости остальные ищутся в официальной документации Tcl/Tk по мере надобности, а не заучиваются заранее.
Button-1 — левая кнопка мыши
button_1_demo.py
def on_raw_click(event):
print("Клик мышью в координатах", event.x, event.y)
label.bind("<Button-1>", on_raw_click)
Не главный способ активировать клетки игры
<Button-1> полезен для демонстрации низкоуровневого события мыши — но для клеток игрового поля мы всё равно будем использовать command= у Button (раздел 17.10). Здесь это просто иллюстрация синтаксиса.Практика: синтаксис событий
Автоматическая проверка — сопоставляем описание действия с правильной строкой последовательности события