Помимо событий, которые были проиллюстрированы в данном примере, сценарий, использующий библиотеку tkinter, может зарегистрировать обработчики других видов связываемых событий. Например:
• <ButtonRelease> генерируется при отпускании кнопки мыши (событие <ButtonPress> генерируется, когда кнопка нажимается).
• <Motion> генерируется при перемещении указателя мыши.
• Обработчики <Enter> и <Leave> генерируются в момент входа и выхода указателя мыши из области окна (полезно для автоматического выделения виджета).
• <Configure> генерируется при изменении размеров окна, его положения и так далее (например, новые размеры окна содержатся в атрибутах width и height объекта события). Мы будем использовать это событие для масштабирования содержимого окна при изменении его размеров в примере PyClock, в главе 11.
• <Destroy> генерируется при уничтожении виджета окна (и отличается от механизма protocol менеджера окон, реализованного для кнопки закрытия). Поскольку это событие имеет непосредственное отношение к методам quit и destroy виджетов, я расскажу о нем более подробно далее в этом разделе.
• <FocusIn> и <FocusOut> генерируются, когда виджет получает или теряет фокус ввода.
• <Map> и <Unmap> генерируются, когда окно сворачивается в значок и восстанавливается.
• <Escape>, <BackSpace> и <Tab> генерируются при нажатии других специальных клавиш.
• <Down>, <Left> и <Right> генерируются при нажатии других клавиш со стрелками.
Этот список не полон, а для записи названий событий есть свой довольно сложный синтаксис, например:
• Модификаторы — могут добавляться к идентификаторам событий, чтобы сделать их еще более специфическими. Например, <B1-Motion> означает перемещение указателя мыши при нажатой левой кнопке, а <KeyPress—a> генерируется только при нажатии клавиши «a».
• Синонимы — могут использоваться для имен некоторых частых событий. Например, <ButtonPress-1>, <Button-1> и <1> означают нажатие левой кнопки мыши, а <KeyPress—a> и <Key—a> означают клавишу «a». Все формы имен чувствительны к регистру символов: пишите <KeyEscape>, а не <KEY—ESCAPE>.
• Имеется возможность определять идентификаторы виртуальных событий, обозначающие последовательности из одного или нескольких событий, с помощью пары угловых скобок (например, <<PasteText>>).
С целью экономии места за исчерпывающими сведениями по этой теме мы отсылаем вас к другим источникам информации по Tk и tkinter. Кроме того, изменяя настройки в сценарии и запуская его заново, также можно выяснить некоторые особенности поведения событий — в конце концов, это Python.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011