События, метод 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
- символ.