[译][Tkinter 教程15] event 事件绑定
已获原作者授权. 原系列地址: Python Tkinter
简介
一个 Tkinter 应用生命周期中的大部分时间都处在一个消息循环 (event loop) 中. 它等待事件的发生: 事件可能是 按键按下, 鼠标点击, 鼠标移动 等.
Tkinter 提供了用以处理相关事件的机制. 处理函数可以被绑定给各个控件的各种事件.
widget.bind(event, handler)
如果相关事件发生, handler 函数会被触发, 事件对象 event 会传递给 handler 函数.
#!/usr/bin/python3
# write tkinter as Tkinter to be Python 2.x compatible
from tkinter import *
def hello(event):print("Single Click, Button-l")
def quit(event): print("Double Click, so let's stop") import sys; sys.exit() widget = Button(None, text='Mouse Clicks')
widget.pack()
widget.bind('Button-1', hello)
widget.bind('Double-1', quit)
widget.mainloop()
让我们再写一个例子, 用以处理上面提到的鼠标在控件内移动的事件:
from tkinter import *def motion(event):print("Mouse position: (%s %s)" % (event.x, event.y))returnmaster = Tk()
whatever_you_do = "Whatever you do will be insignificant, but it is very important that you do
it.\n(Mahatma Gandhi)"
msg = Message(master, text = whatever_you_do)
msg.config(bg='lightgreen', font=('times', 24, 'italic'))
msg.bind('Motion',motion)
msg.pack()
mainloop()
事件
Tkinter 使用所谓的 事件队列 (event sequences) 暴露接口以绑定 handler 到相关事件. 事件以字符串的形式给出:
modifier-type-detail
type
字段是一个事件的关键字段. modifer
和 detail
字段则不是必要字段, 很多情况下这两个字段都不会被赋值. 这两个字段用以提供 type
所代表的事件的附加信息. type
字段描述事件种类, 比如 鼠标点击, 键位按下, 控件获得焦点 等.
Event | Description |
---|---|
Button |
某个鼠标按键在控件上被点击. detail 指定了哪一个按键被点击了, 比如, 鼠标左键点击为 Button-1, 鼠标中键点击为 Button-2, 鼠标右键点击为 Button-3, 向上滚动滑轮为 Button-4, 向下滚动滑轮为 Button-5. 如果在控件上按下鼠标的某个键并保持按下, Tkinter 将"抓住"该事件. 之后的鼠标事件, 比如 鼠标移动 或 鼠标按键释放 事件, 会被自动发送给该控件处理, 即使鼠标移动出该控件时依然如此. 鼠标相对当前控件的位置会被存储在 event 对象中的 x 和 y 字段中传递给回调函数.
|
Motion | 鼠标在某个按键被按下时的移动事件. 鼠标左键点击为 B1-Motion, 鼠标中键点击为 B2-Motion, 鼠标右键点击为 B3-Motion. 鼠标相对当前控件的位置会被存储在 event 对象中的 x 和 y 字段中传递给回调函数. |
ButtonRelease | 按钮点击释放事件. 鼠标左键点击为 ButtonRelease-1, 鼠标中键点击为 ButtonRelease-2, 鼠标右键点击为 ButtonRelease-3. 鼠标相对当前控件的位置会被存储在 event 对象中的 x 和 y 字段中传递给回调函数. |
Double-Button | 鼠标双击事件. 鼠标左键点击为 Double-Button-1, 鼠标中键点击为 Double-Button-2, 鼠标右键点击为 Double-Button-3. Double 和 Triple 都可以被用作前缀. 注意: 如果同时绑定单击事件 (Button-1) 和双击事件 (Double-Button-1), 则两个回调都会被调用. |
Enter | 鼠标移入控件事件. 注意: 这个事件不是 Enter 键按下事件, Enter 按下事件是 Return. |
Leave | 鼠标移出控件事件. |
FocusIn | 控件或控件的子空间获得键盘焦点. |
FocusOut | 控件丢失键盘焦点 (焦点移动到另一个控件). |
Return | Enter 点击事件. 键盘上的所有键位都可以被绑定. 特殊键位名称包括 Cancel, BackSpace, Tab, Return (Enter), Shift_L (任意 Shift), Control_L (任意 Control), Alt_L (任意 Alt), Pause, Caps_Lock, Escape, Prior (Page Up), Next (Page Down), End, Home, Left, Up, Right, Down, Print, Insert, Delete, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Num_Lock, and Scroll_Lock |
Key | 键盘按键点击事件. 键值被存储在 event 对象中传递. (特殊键位会传递空键值). |
a | "a" 键被点击. 其他字符也可以如此定义. 特殊情况包括 空格 (space) 和 小于号 (less). 注意 "1" 是绑定键盘键位, 而 1 则是按钮绑定. |
Shift-Up | 在 shift 被按下时点击 up 键. 同样的, 也有 Alt-Up, Control-Up 事件. |
Configure | 控件大小改变事件. 新的控件大小会存储在 event 对象中的 width 和 height 属性传递. 有些平台上该事件也可能代表控件位置改变. |
全系列:
[译][Tkinter 教程01] 入门: Label 控件
[译][Tkinter 教程02] Message 控件
[译][Tkinter 教程03] Button 控件
[译][Tkinter 教程04] Variable 类
[译][Tinkter 教程05] Radiobutton 控件
[译][Tkinter 教程06] Checkbox 控件
[译][Tkinter 教程07] Entry 控件
[译][Tkinter 教程08] Canvas 图形绘制
[译][Tkinter 教程09] Scale 控件
[译][Tkinter 教程10] Text 控件
[译][Tkinter 教程11] 对话框和消息框
[译][Tkinter 教程12] 布局管理 (Pack Place Grid)
[译][Tkinter 教程13] Mastermind 游戏
[译][Tkinter 教程14] menu 菜单
[译][Tkinter 教程15] event 事件绑定
译者水平有限, 如有疏漏, 欢迎指正.
已获得原作者授权. 原文地址: Events and Binds
[译][Tkinter 教程15] event 事件绑定相关推荐
- [译][Tkinter 教程10] Text 控件
已获原作者授权. 原系列地址: Python Tkinter 简介及简例 Text 控件用来显示多行文本. Tkinter 的 Text 控件很强大, 很灵活, 可以实现很多功能. 虽然这个控件的主要 ...
- [译][Tkinter 教程14] menu 菜单
已获原作者授权. 原系列地址: Python Tkinter 简介 一提到"menu"这个词, 很多人首先想到的是餐馆里的菜单. 虽然餐馆菜单和计算机程序中的菜单看起来一点也不像, ...
- [译][Tkinter 教程02] Message 控件
已获原作者授权. 原系列地址: Python Tkinter Message 控件 Message 控件用来展示一些文字短消息. Message 和 Label 控件有些类似, 但在展示文字方面比 L ...
- Tkinter - events and bindings事件绑定
事件绑定 一个 Tkinter 应用程序大部分时间花费在事件循环中(通过 mainloop() 方法进入).事件可以有各种来源:包括用户触发的鼠标和键盘操作和窗口管理器触发的重绘事件(在多数情况下是由 ...
- 迷你MVVM框架 avalonjs 学习教程14、事件绑定
之前的章节许多示例代码也或多或少地展示了如何使用ms-click来绑定事件了.能直接在模板上绑定是事件,这也是静态模板与动态绑定的一大区别.ms-click不是简单的onclick的别名,它在内部屏蔽 ...
- [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
一.在vue中,绑定事件,用v-on:事件类型, 如绑定一个点击事件, 我们可以这样子做 1 window.onload = function () { 2 var c = new Vue({ 3 e ...
- python tkinter教程 博客园_python tkinter教程-事件绑定
一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...
- python tkinter listbox_python tkinter listbox事件绑定
我很难让事件绑定与python/tkinter一起工作.我只是试图点击并打印位置,但每次我这样做,"-1"是结果. 这是我的密码from Tkinter import * impo ...
- tkinter事件绑定方法总结
1. 方法总结 tkinter中事件绑定方法可以分为两大类: 组件对象的绑定,包含2种方法: 通过command属性绑定,适合简单不需要获取event对象的情况, 例如:Button(root,tex ...
最新文章
- Java was not the perfect solution for every pro...
- Google智能生态链的演进路径
- 计算机二级考试选择科目有级别,计算机二级考试该选哪一科目?
- SAP中过账码or记账码posting code
- 基于 CentOS Mysql 安装与主从同步配置详解
- LINUX下的tty,console与串口分析
- 2018GDKOI——记录
- python列向输出字符串_Python读取字符串按列分配后按行输出
- java day14 【List、Set、数据结构、Collections】
- C语言 — 编程规范、标识符命名规范
- python科学计算第三版-python科学计算pdf下载
- Android WebView白屏解决方案
- 《刘润·5分钟商学院》学习总结01
- 一种基于全息投影设备的虚拟形象交互方法及系统
- delphi第三方组件总述
- 我的团长我的团第二十四集
- 图书里的音频二维码如何实现呢?
- CentOS7安装mysql5.7.19的手顺,步骤(非常详细)
- android实现拍照、相册选图、裁剪功能,兼容7.0以及小米
- 必看:C语言高效学习方法(附经典试题详解)