tkinter入门(6)--事件绑定

1、事件绑定简介

  tkinter使用一种称为时间序列的机制来允许用户定义事件,用户需使用bind()方法将具体的事件序列与自定义的方法相绑定。事件序列是以字符串的形式表示的,可以表示一个或多个相关联的事件(如果是多个事件,那么对应的方法只有在满足所有事件的前提下才会被调用)。
事件序列使用以下语法描述:

<modifier-type-detail>
  • 时间序列是包含在尖括号(<…>)里的
  • type部分的内容是最重要的,它通常用于描述普通的事件类型,例如鼠标点击或键盘按钮点击
  • modifier部分的内容是可选的,它通常用于描述组合键,例如Ctrl+c,Shift+鼠标左键点击
  • detail部分的内容是可选的,它通常用于描述具体的按键,例如Button-1表示鼠标左键。
事件序列含义
<Button-1>用户点击鼠标左键
<Keypress-H>用户点击H键
<Control-Shift-KeyPress-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主管、监听

运行截图:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值