import tkinter as tk

window = tk.Tk()
# 设置窗口大小
winWidth = 600
winHeight = 400
# 获取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2) # 设置主窗口标题
window.title("绑定事件参数说明")
# 设置窗口初始位置在屏幕居中
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 设置窗口图标
window.iconbitmap("./image/icon.ico")
# 设置窗口宽高固定
window.resizable(0, 0) def callBack(event):
print("button is click")
btn = tk.Button(window, text="点击")
btn.bind("<Button-1>", callBack)
btn.pack() def windowBack(event):
print(event.char)
window.bind("<Key>", windowBack) window.mainloop()

  

一、事件序列

事件序列是以字符串的形式表示的,可以表示一个或多个相关联的事件。

事件序列使用以下语法描述:

<modifier-type-detail>

    • 事件序列是包含在尖括号(<...>)中
    • type 部分的内容是最重要的,它通常用于描述普通的事件类型,例如鼠标点击或键盘按键点击(详见下方)。
    • modifier 部分的内容是可选的,它通常用于描述组合键,例如 Ctrl + c,Shift + 鼠标左键点击(详见下方)。
    • detail 部分的内容是可选的,它通常用于描述具体的按键,例如 Button-1 表示鼠标左键。
事件序列 含义 序列
<Button-1> 用户点击鼠标左键 detail
<KeyPress-H> 用户点击 H 按键  
<Control-Shift-KeyPress-H> 用户同时点击 Ctrl + Shift + H

二、type

Activate  当组件的状态从“未激活”变为“激活”的时候触发该事件
Button  1. 当用户点击鼠标按键的时候触发该事件
2. detail 部分指定具体哪个按键:<Button-1>鼠标左键,<Button-2>鼠标中键,<Button-3>鼠标右键,<Button-4>滚轮上滚(Linux),<Button-5>滚轮下滚(Linux)
ButtonRelease  1. 当用户释放鼠标按键的时候触发该事
2. 在大多数情况下,比 Button 要更好用,因为如果当用户不小心按下鼠标,用户可以将鼠标移出组件再释放鼠标,从而避免不小心触发事件
Configure  当组件的尺寸发生改变的时候触发该事件
Deactivate  当组件的状态从“激活”变为“未激活”的时候触发该事件
Destroy  当组件被销毁的时候触发该事件
Enter  1. 当鼠标指针进入组件的时候触发该事件
2. 注意:不是指用户按下回车键
Expose  当窗口或组件的某部分不再被覆盖的时候触发该事件
FocusIn  1. 当组件获得焦点的时候触发该事件
2. 用户可以用 Tab 键将焦点转移到该组件上(需要该组件的 takefocus 选项为 True)
3. 你也可以调用 focus_set() 方法使该组件获得焦点
FocusOut  当组件失去焦点的时候触发该事件
KeyPress  1. 当用户按下键盘按键的时候触发该事件
2. detail 可以指定具体的按键,例如 <KeyPress-H>表示当大写字母 H 被按下的时候触发该事件
3. KeyPress 可以简写为 Key
KeyRelease  当用户释放键盘按键的时候触发该事件
Leave  当鼠标指针离开组件的时候触发该事件
Map  1. 当组件被映射的时候触发该事件
2. 意思是在应用程序中显示该组件的时候,例如调用 grid() 方法
Motion  当鼠标在组件内移动的整个过程均触发该事件
MouseWheel  1. 当鼠标滚轮滚动的时候触发该事件
2. 目前该事件仅支持 Windows 和 Mac 系统,Linux 系统请参考 Button
Unmap  1. 当组件被取消映射的时候触发该事件
2. 意思是在应用程序中不再显示该组件的时候,例如调用 grid_remove() 方法
Visibility  当应用程序至少有一部分在屏幕中是可见的时候触发该事件

三、modifier

Alt 当按下 Alt 按键的时候
Any  1. 表示任何类型的按键被按下的时候
2. 例如 <Any-KeyPress> 表示当用户按下任何按键时触发事件
Control  当按下 Ctrl 按键的时候
Double  1. 当后续两个事件被连续触发的时候
2. 例如 <Double-Button-1> 表示当用户双击鼠标左键时触发事件
Lock   当打开大写字母锁定键(CapsLock)的时候
Shift  当按下 Shift 按键的时候
Triple  跟 Double 类似,当后续三个事件被连续触发的时候

四、Event 对象

widget  产生该事件的组件
x, y 当前的鼠标位置坐标(相对于窗口左上角,像素为单位)
x_root, y_root  当前的鼠标位置坐标(相对于屏幕左上角,像素为单位)
keysym    按键名,见下方 Key names(键盘事件专属)
keycode  按键码,见下方 Key names(键盘事件专属)
num  按钮数字(鼠标事件专属)
width, height 组件的新尺寸(Configure 事件专属)

type  该事件类型

五、Key names

按键名(keysym) 按键码(keycode) 代表的按键
Alt_L 64 左边的 Alt 按键
Alt_R 113 右边的 Alt 按键
BackSpace 22 Backspace(退格)按键
Cancel 110 break 按键
Caps_Lock 66 CapsLock(大写字母锁定)按键
Control_L 37 左边的 Ctrl 按键
Control_R 109 右边的 Ctrl 按键
Delete 107 Delete 按键
Down 104 ↓ 按键
End 103 End 按键
Escape 9 Esc 按键
Execute 111 SysReq 按键
F1 67 F1 按键
F2 68 F2 按键
F3 69 F3 按键
F4 70 F4 按键
F5 71 F5 按键
F6 72 F6 按键
F7 73 F7 按键
F8 74 F8 按键
F9 75 F9 按键
F10 76 F10 按键
F11 77 F11 按键
F12 96 F12 按键
Home 97 Home 按键
Insert 106 Insert 按键
Left 100 ← 按键
Linefeed 54 Linefeed(Ctrl + J)
KP_0 90 小键盘数字 0
KP_1 87 小键盘数字 1
KP_2 88 小键盘数字 2
KP_3 89 小键盘数字 3
KP_4 83 小键盘数字 4
KP_5 84 小键盘数字 5
KP_6 85 小键盘数字 6
KP_7 79 小键盘数字 7
KP_8 80 小键盘数字 8
KP_9 81 小键盘数字 9
KP_Add 86 小键盘的 + 按键
KP_Begin 84 小键盘的中间按键(5)
KP_Decimal 91 小键盘的点按键(.)
KP_Delete 91 小键盘的删除键
KP_Divide 112 小键盘的 / 按键
KP_Down 88 小键盘的 ↓ 按键
KP_End 87 小键盘的 End 按键
KP_Enter 108 小键盘的 Enter 按键
KP_Home 79 小键盘的 Home 按键
KP_Insert 90 小键盘的 Insert 按键
KP_Left 83 小键盘的 ← 按键
KP_Multiply 63 小键盘的 * 按键
KP_Next 89 小键盘的 PageDown 按键
KP_Prior 81 小键盘的 PageUp 按键
KP_Right 85 小键盘的 → 按键
KP_Subtract 82 小键盘的 - 按键
KP_Up 80 小键盘的 ↑ 按键
Next 105 PageDown 按键
Num_Lock 77 NumLock(数字锁定)按键
Pause 110 Pause(暂停)按键
Print 111 PrintScrn(打印屏幕)按键
Prior 99 PageUp 按键
Return 36 Enter(回车)按键
Right 102 → 按键
Scroll_Lock 78 ScrollLock 按键
Shift_L 50 左边的 Shift 按键
Shift_R 62 右边的 Shift 按键
Tab 23 Tab(制表)按键
Up 98 ↑ 按键

Tkinter 之事件绑定的更多相关文章

  1. python tkinter教程-事件绑定

    一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...

  2. tkinter学习-事件绑定与窗口

    阅读目录: 事件绑定 Toplevel组件 标准对话框 事件绑定: 说明:对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上. 事件序列: 说明:用户需要使用bind()方法将具 ...

  3. python tkinter Treeview 事件绑定

    def trefun(event): sels= event.widget.selection()#event.widget获取Treeview对象,调用selection获取选择对象名称 for i ...

  4. tkinter之事件绑定

  5. python tkinter中的事件绑定

    一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...

  6. python之Gui编程事件绑定 2014-4-8

    place() 相对定位与绝对定位 相对定位 拖动会发生变化 绝对定位不会from Tkinter import *root = Tk()# Absolute positioningButton(ro ...

  7. tk(三)按钮的事件绑定

    (三)按钮的事件绑定 ==1.普通的Button绑定事件== (1)说明: Button 使用 command=功能函数 来绑定 Button(win, text="确定", co ...

  8. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  9. 7 HTML&JS等前端知识系列之jquery的事件绑定

    preface 我们知道,每一个a,input等等标签都可以为其绑定一个事件,onclick也好,focus 也罢,都可以绑定的.但是众神key想过这个问题没有,倘若这里有1000个input标签需要 ...

随机推荐

  1. python 直角图标生成圆角图标

    参考链接:https://stackoverflow.com/questions/11287402/how-to-round-corner-a-logo-without-white-backgroun ...

  2. webRTC client 源码环境工具配置

    以下操作真实实验过,安卓,苹果均可成功 环境 Mac 10.13.6 Xcode 11 翻墙代理:Lantern 专业版 Python 2.7.10 设置 git 代理 #设置git代理 $ git ...

  3. HTML表格跨行、跨列操作(rowspan、colspan)

    转自:https://blog.csdn.net/u012724595/article/details/79401401 一般使用<td>元素的colspan属性来实现单元格跨列操作,使用 ...

  4. 解决linux下创建用户时出现 Creating mailbox file: 文件已存在

    原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱),路径是:/var/spool/mail/用户名.      可以直接用命令#rm -rf /var/spool/mail/用户名    ...

  5. UIP和lwip的区别 转载

    uIP是专门为8位和16位控制器设计的一个非常小的TCP/IP栈.完全用C编写,因此可移植到各种不同的结构和操作系统上,一个编译过的栈可以在几KB ROM或几百字节RAM中运行.uIP中还包括一个HT ...

  6. IAR使用ST-Link下载仿真

    修改Debugger->Setup->Driver 选择ST-LINK 修改 ST-LINK ->Interface选择SWD,CPU clock配置单片机CPU系统时钟. 修改De ...

  7. Pandas进阶笔记 (0)为什么写这个系列

    使用Pandas数年之久了,从最早的0.17版本开始接触Pandas,到现在0.25版本,踩过不少坑,面对各种稀奇古怪的bug抓耳挠腮.每每想要解决bug,或者想要实现一个特定的数据操作需求,首先想到 ...

  8. java AST JCTree简要分析

    JCTree简要分析 [toc] JCAnnotatedType 被注解的泛型:(注解的Target为ElementType.TYPE_USE时可注解泛型) public static class A ...

  9. 使用BERT模型生成token级向量

    本文默认读者有一定的Transformer基础,如果没有,请先稍作学习Transormer以及BERT. 相信网上有很多方法可以生成BERT向量,最有代表性的一个就是bert as service,用 ...

  10. ASP.NET MVC 入门11、使用AJAX

    asp.net mvc 支持微软自身Ajax 和 JQuery框架 asp.net mvc View视图可以理解为 一个包含"<%%>"变量引和的模板. Script与 ...