事件绑定
对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上。当被触发的事件满足该组件绑定的事件时,Tkinter就会带着事件描述去调用handler()方法
实例1:捕获单击鼠标位置
1 from tkinter import*
2
3 root = Tk()
4
5 def callback(event):
6 print("点击位置:",event.x,event.y)
7
8 frame = Frame(root,width=200,height=200)
9 #Button表示鼠标点击事件
10 #1代表左键 2代表中间滚轮点击 3代表右键
11 frame.bind("<Button-1>",callback)#按键按下时,调用callback方法
12 frame.pack()
13
14 mainloop()
实例2:捕获键盘事件
1 #捕获单击鼠标的位置
2 from tkinter import*
3
4 root = Tk()
5
6 def callback(event):
7 print("敲击位置:",repr(event.char))#打印当前按下按键的字符
8 print(event.char)
9
10 frame = Frame(root,width=200,height=200)
11 #Key为键盘事件
12 frame.bind("<Key>",callback)#按键按下时,调用callback方法
13 frame.focus_set()#获得焦点
14 frame.pack()
15
16 mainloop()
实例3:捕获鼠标在组件上的运动轨迹
1 #当鼠标在组件内移动的整个过程均触发该事件
2
3 from tkinter import*
4
5 root = Tk()
6
7 def callback(event):
8 print("当前位置:",event.x,event.y)#打印当前按下按键的字符
9
10 frame = Frame(root,width=200,height=200)
11 frame.bind("<Motion>",callback)#按键按下时,调用callback方法
12 frame.pack()
13
14 mainloop()
事件序列
Tkinter使用一种称为事件序列的机制来允许用户定义事件,用户需要使用bind()方法将具体的事件序列与自定义的方法绑定
Event对象(按键名keysym和按键码keycode)
实例1:打印当前按下按键的按键名
1 from tkinter import*
2
3 root = Tk()
4
5 def callback(event):
6 print(event.keysym)#打印当前按下按键的按键名
7 print(event.char)
8
9 frame = Frame(root,width=200,height=200)
10 #Key为键盘事件
11 frame.bind("<Key>",callback)#按键按下时,调用callback方法
12 frame.focus_set()#获得焦点
13 frame.pack()
14
15 mainloop()