python3 tkinter 事件应用
python3 tkinter 事件
事件序列
tkinter 使用事件序列来让用户自定义事件。用bind()方法将事件序列与自定义的事件处理方法绑定。事件序列是以字符串的形式表示,可一个或多个相关联事件组合。组合事件需要同时满足所有组合事件时才会触发已绑定的处理方法。
事件语法
事件序列
使用字符串表示:
"<修饰-类型-详细描述>"
- 所有事件描述序列字符串包括在尖括号 "<>" 中;
- 修饰 部分为可选内容,一般在组合事件中用于多功能按键组合的描述。如:Ctrl + Shift + V;
- 类型 部分用于描述一般的事件对象类型,如键盘按键或鼠标动作等;
- 详细描述 部分为可选内容,一般用于描述事件具体单元对象,如KeyPress-A,表示按键盘A键
附:修饰符
| 修饰符 | 意义 |
| Alt | 按下Alt键 |
| Any | 按下任意键。如<Any-KeyPress>,表示按下任意键事件 |
| Control | 按下Ctrl键 |
| Double | 被修饰的事件类型连续两次触发。如<Double-Button-1>,表示双击鼠标左键 |
| Lock | 大写字母锁定键 |
| Shift | 按下Shift |
| Triple | 被修饰的事件类型连续三次触发 |
响应函数
响应函数用用户定义,然后使用bind()方法将其与事件绑定;
事件被触发后,将调用响应函数,并将Event对象当做参数传递给函数。
附1:Event对象常用属性
| 属性 | 意义描述 |
| widget | 产生事件的组件 |
| x,y | 以窗口左上角为原点,鼠标指针的坐标。以像素为单位 |
| x_root,y_root | 以屏幕左上角为原点,鼠标指针的坐标,以像素为单位 |
| char | 键盘按键字符 |
| keysym | 键盘按键名 |
| keycode | 键盘按键码 |
| num | 鼠标按钮数字 |
| width,height | 组件尺寸改变后的宽和高 |
| type | 事件类型 |
附2:键盘事件属性参数值整理
| 按键名(keysym) | 按键码(keycode) | 按键描述 |
| Alt_L | 64 | 左Alt |
| Alt_R | 113 | 右Alt |
| BackSpace | 22 | 退格 |
| Cancel | 110 | break键 |
| Caps_Lock | 66 | 大写字母锁定 |
| Control_L | 37 | 左Ctrl |
| Control_R | 109 | 右Ctrl |
| Shift_L | 50 | 左Shift |
| Shift_R | 62 | 右Shift |
| Insert | 106 | 插入键 |
| Delete | 107 | 删除键 |
| Left | 100 | 左方向键 |
| Right | 102 | 右方向键 |
| Up | 98 | 上方向键 |
| Down | 104 | 下方向键 |
| Home | 97 | Home键 |
| End | 103 | End键 |
| Escape | 9 | Esc键 |
| Execute | 111 | Sysreq键 |
| F1~F11 | 67~77 | F1键到F11键(一一对应) |
| F12 | 96 | F12键 |
| 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_Subtract | 82 | 数字键盘 - |
| KP_Add | 86 | 数字键盘 + |
| KP_Begin | 84 | 数字键盘中间键(5) |
| KP_Decimal | 91 | 数字键盘点键 |
| KP_Delete | 91 | 数字键盘删除 |
| KP_Divide | 112 | 数字键盘反斜杠 / |
| KP_Up | 80 | 数字键盘上方向 |
| KP_Left | 83 | 数字键盘左方向 |
| KP_Right | 85 | 数字键盘右方向 |
| KP_Down | 88 | 数字键盘下方向键 |
| KP_End | 87 | 数字键盘End键 |
| KP_Enter | 108 | 数字键盘回车 |
| KP_Home | 79 | 数字键盘Home |
| KP_Insert | 90 | 数字键盘插入 |
| KP_Multiply | 63 | 数字键盘星号 * |
| KP_Next | 89 | 数字键盘PageDown |
| KP_Prior | 81 | 数字键盘PageUp |
| Next | 105 | PageDown键 |
| Num_Lock | 77 | 数字键盘锁定 |
| Pause | 110 | Pause暂停 |
| 111 | 屏幕打印 | |
| Prior | 99 | PageUp键 |
| Return | 36 | 回车 |
| Scroll_Lock | 78 | ScrollLock键 |
| Tab | 23 | 制表按键 |
事件类型整理
| 事件类型 | 意义描述 |
| Activate |
组件状态变化事件,未激活变为激活时触发; 与 Deactivate 相对 |
| Button |
鼠标按键点击事件; 由描述部分指定具体按键: <Button-1> 鼠标左键 <Button-2> 鼠标中键 <Button-3> 鼠标右键 <Button-4> 滚轮上(linux) <Button-5> 滚轮下(linux) |
| ButtonRelease |
释放鼠标按键事件。强调释放动作 |
| Configure | 组件尺寸改变事件 |
| Deactivate |
组件状态改变事件。激活变为未激活; 与 Activate 相对 |
| Destroy | 组件被销毁触发事件 |
| Enter |
鼠标指针进入组件区域事件; 与 Leave 相对 |
| Expose | 窗口或组件的部分被显示时触发事件,比如某部分被置顶 |
| FocusIn | 获得焦点事件。如果组件的takefocus属性为True,则用户可通过Tab按键切换组件焦点。也可用focus_set()方法设置组件焦点 |
| FocusOut | 失去焦点事件 |
| KeyPress |
键盘按键事件。强调按下动作; 由描述部分指定具体按键,如 <KeyPress-A>、<KeyPress-B>; 可简写为Key |
| KeyRelease | 释放键盘按键事件。强调释放动作 |
| Leave |
鼠标指针离开组件区域事件; 与 Enter 相对 |
| Map | 组件被映射时触发事件。指在程序中,该组件被调用(组件显示、隐藏等)。如调用grid()方法 |
| Motion | 鼠标在组件区域内移动事件 |
| MouseWheel | 鼠标滚轮事件。该事件序列支持Windows和Mac 等同于Linux下的Button-4/5 |
| Unmap |
组件被取消映射事件; 与Map相对 |
| Visibility | 应用程序至少有一部分被置顶(即被显示出来)事件 |

浙公网安备 33010602011771号