已获原作者授权. 原系列地址: 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 字段是一个事件的关键字段. modiferdetail 字段则不是必要字段, 很多情况下这两个字段都不会被赋值. 这两个字段用以提供 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 事件绑定相关推荐

  1. [译][Tkinter 教程10] Text 控件

    已获原作者授权. 原系列地址: Python Tkinter 简介及简例 Text 控件用来显示多行文本. Tkinter 的 Text 控件很强大, 很灵活, 可以实现很多功能. 虽然这个控件的主要 ...

  2. [译][Tkinter 教程14] menu 菜单

    已获原作者授权. 原系列地址: Python Tkinter 简介 一提到"menu"这个词, 很多人首先想到的是餐馆里的菜单. 虽然餐馆菜单和计算机程序中的菜单看起来一点也不像, ...

  3. [译][Tkinter 教程02] Message 控件

    已获原作者授权. 原系列地址: Python Tkinter Message 控件 Message 控件用来展示一些文字短消息. Message 和 Label 控件有些类似, 但在展示文字方面比 L ...

  4. Tkinter - events and bindings事件绑定

    事件绑定 一个 Tkinter 应用程序大部分时间花费在事件循环中(通过 mainloop() 方法进入).事件可以有各种来源:包括用户触发的鼠标和键盘操作和窗口管理器触发的重绘事件(在多数情况下是由 ...

  5. 迷你MVVM框架 avalonjs 学习教程14、事件绑定

    之前的章节许多示例代码也或多或少地展示了如何使用ms-click来绑定事件了.能直接在模板上绑定是事件,这也是静态模板与动态绑定的一大区别.ms-click不是简单的onclick的别名,它在内部屏蔽 ...

  6. [js高手之路] vue系列教程 - vue的事件绑定与方法(2)

    一.在vue中,绑定事件,用v-on:事件类型, 如绑定一个点击事件, 我们可以这样子做 1 window.onload = function () { 2 var c = new Vue({ 3 e ...

  7. python tkinter教程 博客园_python tkinter教程-事件绑定

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

  8. python tkinter listbox_python tkinter listbox事件绑定

    我很难让事件绑定与python/tkinter一起工作.我只是试图点击并打印位置,但每次我这样做,"-1"是结果. 这是我的密码from Tkinter import * impo ...

  9. tkinter事件绑定方法总结

    1. 方法总结 tkinter中事件绑定方法可以分为两大类: 组件对象的绑定,包含2种方法: 通过command属性绑定,适合简单不需要获取event对象的情况, 例如:Button(root,tex ...

最新文章

  1. Java was not the perfect solution for every pro...
  2. Google智能生态链的演进路径
  3. 计算机二级考试选择科目有级别,计算机二级考试该选哪一科目?
  4. SAP中过账码or记账码posting code
  5. 基于 CentOS Mysql 安装与主从同步配置详解
  6. LINUX下的tty,console与串口分析
  7. 2018GDKOI——记录
  8. python列向输出字符串_Python读取字符串按列分配后按行输出
  9. java day14 【List、Set、数据结构、Collections】
  10. C语言 — 编程规范、标识符命名规范
  11. python科学计算第三版-python科学计算pdf下载
  12. Android WebView白屏解决方案
  13. 《刘润·5分钟商学院》学习总结01
  14. 一种基于全息投影设备的虚拟形象交互方法及系统
  15. delphi第三方组件总述
  16. 我的团长我的团第二十四集
  17. 图书里的音频二维码如何实现呢?
  18. CentOS7安装mysql5.7.19的手顺,步骤(非常详细)
  19. android实现拍照、相册选图、裁剪功能,兼容7.0以及小米
  20. 必看:C语言高效学习方法(附经典试题详解)

热门文章

  1. 【Python】【有趣的模块】【systimeos】
  2. 微信小程序之自定义toast弹窗
  3. 网格分割后,边界点的获取方法
  4. 磁盘碎片整理程序的原理是什么?
  5. 使用iframe设置frameset的高度
  6. 网页设计中时尚​​的下拉菜单案例
  7. linux mysql jdk路径配置,Linux下的jdk1.5+eclipse+mysql开发环境配置的经验总结
  8. 2018年7月第一周网站建站笔记
  9. Go设计模式之Factory
  10. 程序员应知道这十大面向对象设计原则