События, метод bind
При взаимодействии пользователя с приложением возникают различные события (нажата кнопка мыши, нажата клавиша на клавиатуре, пользователь перемещает курсор мыши).
Обработка событий
Обработать события (т.е. вызвать определённую функцию при настпулении определённого события) можно с помощью метода bind:
component.bind(event, function)
component - компонент, с которым происходит действие, event - событие, function - вызываемая функция.
События
| Событие | Описание |
|---|---|
| <Button-1> | Нажатие кнопки мыши |
| <B1-Motion> | Движение мыши с зажатой кнопкой мыши |
| <ButtonRelease-1> | Отпускание нажатой кнопки мыши |
| <Double-Button-1> | Двойной клик |
| <Triple-Button-1> | Тройной клик |
| <Motion> | Движение мыши |
| <Enter> | Курсор мыши наведён на компонент |
| <Leave> | Курсор мыши покинул область компонента |
| <Key> | Нажатие любой клавиши на клавиатуре |
| q | Нажатие клавиши q |
| <KeyRelease> | Отпускание нажатой клавиши |
| <Return> | Нажатие клавиши Enter |
При указании событий мыши цифрой обозначается кнопка: 1 - левая, 2 - средняя (колёсико мыши), 3 - правая.
Параметр event
В функцию, вызываемую методом bind, передаётся аргумент event, который содержит информацию о событии (например, координаты мыши).
Событие мыши
Пример с событием мыши:
from tkinter import *
class WindowApplication:
def __init__(self):
self.root = Tk()
self.root.bind('<Motion>', self.mouseMove)
self.root.mainloop()
def mouseMove(self, event):
print(event)
WindowApplication()
При движении мыши будет отображаться информация о событии:
<Motion event state=Mod1 x=179 y=7>
<Motion event state=Mod1 x=178 y=8>
<Motion event state=Mod1 x=177 y=9>
Координаты можно получить следующим образом: event.x, event.y.
Событие клавиатуры
Пример с событием клавиатуры:
from tkinter import *
class WindowApplication:
def __init__(self):
self.root = Tk()
self.root.bind('<Key>', self.keyPress)
self.root.mainloop()
def keyPress(self, event):
print(event)
WindowApplication()
При нажатии клавиши будет отображаться информация о событии:
<KeyPress event state=Mod1 keysym=q keycode=81 char='q' x=285 y=329>
event.keysym - буквенный код клавиши (например, space - пробел), event.keycode - код клавиши, event.char - символ.