Python基础入门学习笔记 074 GUI的终极选择:Tkinter11

发布时间 2023-08-23 14:05:51作者: 一杯清酒邀明月

事件绑定

对于每个组件来说,可以通过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()