Tkinter事件绑定

在GUI编程中,事件是用户对程序直接或间接的操作所产生的,如被单击的按钮、窗口移动、按下键盘等。为了让用户与计算机实现交互,则需要对这些事件绑定到相应的程序进行处理。

事件格式

事件的格式必须是 <modifier-type-detail>

  • <> 事件名必须包含在尖括号内
  • modifier 可选。事件类型的修饰符。例如: 双击击鼠标左键 <Double-Button-1>
  • type 必须。事件类型。
  • detail 可选。用于描述具体的某个键。例如: 单击鼠标左键 <Button-1>

事件绑定

可以在tkinter对象上或者组件对象上,执行bind()方法,指定需要处理的事件和处理程序,格式如下:

1
2
3
.bind("\<event\>",func)
# event 事件名称
# func 处理该事件的函数,可以是lamada表达式

事件绑定示例

1
2
3
4
5
6
7
8
9
import tkinter

root = tkinter.Tk()

def key_handler(event):
    print(event.char, event.keysym, event.keycode)
    
root.bind("<Key>", key_handler)
root.mainloop()

事件类型

事件主要分为三类,鼠标事件、按键事件、其他窗口和组件事件。

键盘事件

在程序中捕获按键事件。

修饰符 说明
Control 事件发生时需按下 Control 键 例: Control-KeyPress-C 表示同时按下 Control + C 我们常用的复制键
Shift 事件发生时需按下 Shift 键
Alt 事件发生时需按下 Alt 键
Control-Alt 组合键 Control-Alt-KeyPress-A 表示同时按下 Ctrl + Shift + A
Lock 事件发生时须处于大小锁定状态
Double 事件连续发生两次
Triple 事件连续发生三次

键盘事件

事件类型 说明
Key 所有按键点击时触发
KeyPress-字母、KeyPress-数字 点击指定字母和数字时触发
Return 点击回车键时触发
Up、Down、Left、Right 点击上、下、左、右方向键时触发
“A”、“a”、“2” 点击字母和数字时触发,大小写很重要,A不等于a
space 特殊键,点击空格键时触发
less 特殊键,点击小于键时触发
“abc” 按照顺序点击相应按键后触发

鼠标事件

在我们的程序中捕获鼠标事件,以下事件均可以加上数字,例如:<Button-1> 表示左键被点击。

  • 1 左键
  • 2 鼠标中键滚轮
  • 3 右键
事件类型 说明
Motion 鼠标移动时触发
Button 元素被点击触发
Double-Button 元素被双击时触发
ButtonPress 鼠标点击时触发
ButtonRelease 释放对该元素点击时触发
B1-Motion、B2-Motion、B3-Motion 鼠标左键、中键、右键点击后拖动时触发
Enter 鼠标悬浮在元素上时触发
Leave 鼠标从元素上离开时触发

其他事件

在窗口或组件级别发生一些事件时,如移动,调整大小和关闭时触发。

事件类型 说明
Configure 窗口或组件移动、调整大小时触发
Destroy 窗口或组件销毁时触发

窗口销毁事件 WM_DELETE_WINDOW,使用protocol()方法处理,销毁前在回调中做一些事情。

1
root.protocol("WM_DELETE_WINDOW", window_exit)
站长微信
请备注来意
二维码