tkinter入门(6)--事件绑定
- 1、事件绑定简介
- 2、鼠标事件绑定
- 3、键盘事件绑定``、``,打印普通字母
- 4、键盘事件绑定``、``,可以打印普通字母和特殊字母
- 5、获取鼠标实时位置
1、事件绑定简介
tkinter使用一种称为时间序列的机制来允许用户定义事件,用户需使用bind()方法将具体的事件序列与自定义的方法相绑定。事件序列是以字符串的形式表示的,可以表示一个或多个相关联的事件(如果是多个事件,那么对应的方法只有在满足所有事件的前提下才会被调用)。
事件序列使用以下语法描述:
<modifier-type-detail>
- 时间序列是包含在尖括号(<…>)里的
- type部分的内容是最重要的,它通常用于描述普通的事件类型,例如鼠标点击或键盘按钮点击
- modifier部分的内容是可选的,它通常用于描述组合键,例如Ctrl+c,Shift+鼠标左键点击
- detail部分的内容是可选的,它通常用于描述具体的按键,例如Button-1表示鼠标左键。
事件序列 | 含义 |
| 用户点击鼠标左键 |
| 用户点击H键 |
| 用户同时点击Ctrl+Shift+H |
2、鼠标事件绑定
控制台打印出用户鼠标点击软件位置。
import tkinter as tk
root = tk.Tk()#生成顶层窗口
root.title("组件使用!")#设置图形用户界面标题
#鼠标事件绑定
def callback(event):
print('点击位置',event.x,event.y)#打印出相对于应用程序位置
frame1 = tk.Frame(root,width = 200,height = 200)
frame1.bind('<Button-1>',callback)#尖括号中Button代表事件,1代表事件描述,Button-1响应鼠标左键点击
#Button-2响应鼠标中键点击,Button-3响应鼠标右键点击,第二个参数是自定义函数
frame1.pack()
root.mainloop()#重要步骤,进入主事件循环,由tkinter主管、监听
运行截图:
3、键盘事件绑定<Key>
、<KeyPress>
,打印普通字母
控制台打印出用户在英文输入法下敲击键盘中的英文字母。
import tkinter as tk
root = tk.Tk()#生成顶层窗口
root.title("组件使用!")#设置图形用户界面标题
#键盘事件绑定<Key>、<KeyPress>,打印普通字母
#只有软件获取焦点后,才能响应键盘事件
def callback(event):
print('点击字符',event.char)#打印出相对于应用程序位置
frame1 = tk.Frame(root,width = 200,height = 200)
frame1.bind('<Key>',callback)#尖括号中Button代表事件,1代表事件描述,Button-1响应鼠标左键点击
#Button-2响应鼠标中键点击,Button-3响应鼠标右键点击,第二个参数是自定义函数
frame1.focus_set()
frame1.pack()
root.mainloop()#重要步骤,进入主事件循环,由tkinter主管、监听
运行截图:
4、键盘事件绑定<Key>
、<KeyPress>
,可以打印普通字母和特殊字母
控制台打印出用户在英文输入法下敲击键盘中的英文字母和特殊字母,中文输入法下敲键盘字母会爆出乱码。
import tkinter as tk
root = tk.Tk()#生成顶层窗口
root.title("组件使用!")#设置图形用户界面标题
#键盘事件绑定<Key>、<KeyPress>,可以打印普通字母和特殊字母
#只有软件获取焦点后,才能响应键盘事件
def callback(event):
print('点击字符',event.keysym)#打印出相对于应用程序位置
frame1 = tk.Frame(root,width = 200,height = 200)
frame1.bind('<Key>',callback)#尖括号中Button代表事件,1代表事件描述,Button-1响应鼠标左键点击
#Button-2响应鼠标中键点击,Button-3响应鼠标右键点击,第二个参数是自定义函数
frame1.focus_set()
frame1.pack()
root.mainloop()#重要步骤,进入主事件循环,由tkinter主管、监听
运行截图:
5、获取鼠标实时位置
当鼠标在软件界面内时会在控制台打印出位置信息。
import tkinter as tk
root = tk.Tk()#生成顶层窗口
root.title("组件使用!")#设置图形用户界面标题
#获取鼠标实时位置<Motion>
def callback(event):
print('实时位置',event.x,event.y)#打印出相对于应用程序位置
frame1 = tk.Frame(root,width = 200,height = 200)
frame1.bind('<Motion>',callback)#尖括号中Button代表事件,1代表事件描述,Button-1响应鼠标左键点击
#Button-2响应鼠标中键点击,Button-3响应鼠标右键点击,第二个参数是自定义函数
frame1.pack()
root.mainloop()#重要步骤,进入主事件循环,由tkinter主管、监听
运行截图: