🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 8.3.1 事件和事件对象 事件是针对应用程序所发生的事情,并且需要应用程序对它做出响应或进行处理。Tkinter中定义了很多种事件,足以支持常见的 GUI 应用程序开发。 Tkinter 事件可以用特定形式的字符串来描述,称为事件模式。事件模式的一般形式是: ``` <modifier-type-detail> ``` 其中类型符 type 指定事件类型,最常用的类型有分别表示鼠标事件和键盘事件的 Button 和 Key;修饰符 modifier 用于描述鼠标键或键盘的双击、组合等情况;细节符 detail 指定具体的 鼠标键或键盘按键,如鼠标的左中右三个键分别用 1、2、3 表示,键盘按键用相应字符或按 键名称表示。modifier 和 detail 是可选的,而且事件模式经常可以使用简化形式。例如 ``` <Double-Button-1> ``` 描述符中,修饰符是 Double,类型符是 Button,细节符是 1,综合起来描 述的事件就是双击鼠标左键。 常用的鼠标事件包括: + &lt;ButtonPress-1&gt;:按下鼠标左键。可简写为&lt;Button-1&gt;甚至&lt;1&gt;①。类似地有&lt;Button-2&gt;(按下鼠标中键)和&lt;Button-3&gt;(按下鼠标右键)。 + &lt;B1-Motion&gt;:按下鼠标左键并移动鼠标。类似有&lt;B2-Motion&gt;和&lt;B3-Motion&gt;。 + &lt;Double-Button-1&gt;:双击鼠标左键。 + &lt;Enter&gt;:鼠标指针进入构件。 + &lt;Leave&gt;:鼠标指针离开构件。 > ① 从易理解和简明的标准看,&lt;Button-1&gt;形式最可取。 常用的键盘事件包括: + &lt;Key-a&gt;:按下 a 键。可简写为 a(不用尖括号!)。可打印字符(字母、数字和标点 符号)都可像字母 a 这样使用,但有两个例外:空格键对应的事件是&lt;space&gt;,小于 号键对应的事件是&lt;less&gt;。注意:1 是键盘事件,而&lt;1&gt;是鼠标事件。 + &lt;Return&gt;:按下回车键。非可打印字符都可像回车键这样用&lt;键名&gt;表示对应事件,例如&lt;Tab&gt;、&lt;Shift_L&gt;、&lt;Control_R&gt;、&lt;Up&gt;、&lt;Down&gt;、&lt;F1&gt;等等。 + &lt;Key&gt;:按下任意键。 + &lt;Shift-Up&gt;:同时按下 Shift 键和↑键。类似的还有 Alt 组合、Ctrl 组合。 每个事件都导致系统创建一个 Event 对象,并将该对象传递给事件处理函数。事件对象 具有若干描述事件的属性,常用的有: + x 和 y:鼠标点击位置坐标(相对于构件左上角),单位是像素。 + x_root 和 y_root:鼠标点击位置坐标(相对于屏幕左上角),单位是像素。 + num:点击的鼠标键号,1、2、3 分别表示左、中、右键。 + char:如果按下 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属性为空 串。 + keysym:如果按下普通 ASCII 字符键,此属性即是该字符;如果按下特殊键,此属 性设置为该键的名称(是个字符串)。 + keycode:所按键的编码。注意,此编码无法区分该键上的不同字符,即它不是键上 字符的编码。 + keysym_num:这是 keysym 的数值表示。对普通单字符键来说,就是 ASCII 码。 例如,按下任意键都可触发&lt;Key&gt;事件,在事件处理函数中可以根据传递来的事件对象的 char 属性来确定具体按下的是哪一个键。