Глава 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). Здесь это просто иллюстрация синтаксиса.
Практика: синтаксис событий
Автоматическая проверка — сопоставляем описание действия с правильной строкой последовательности события
Открыть практику →