Tkinter08_事件绑定 & 事件序列

Tkinter08_事件绑定 & 事件序列

标签(空格分隔): Tkinter


事件绑定

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

Tkinter提供一个强大的机制可以自由地处理事件,对于每个组件来说,可以通过 bind() 方法将函数或方法绑定到具体的事件上。当被触发的事件满足该组件绑定的事件时,Tkinter 就会带着事件描述去调用 handler() 方法。

例 47 获取鼠标单击的位置。

from tkinter import *

root = Tk()

def callback(event):
    print("点击位置:", event.x, event.y)#相对于应用程序左上角的位置

frame = Frame(root, width=200, height=200)
frame.bind("<Button-1>", callback)
frame.pack()

mainloop()

此处输入图片的描述

在上面的例子中,使用 Frame 组件的 bind() 方法将鼠标单击事件 () 和自定义的 callback() 方法绑定起来。那么运行后的结果是:当你单击鼠标左键的时候,IDLE 会相应地将鼠标的位置显示出来。

只有当组件获得焦点的时候才能接收键盘事件(Key)。

例 48 用 focus_set() 获得焦点,可以设置 Frame 的 takefocus 选项为 True,然后使用 Tab 将焦点转移上来。

from tkinter import *

root = Tk()

def callback(event):
    print("敲击位置:", repr(event.char))

frame = Frame(root, width=200, height=200)
frame.bind("<Key>", callback)
frame.focus_set()
frame.pack()

mainloop()

此处输入图片的描述

例 49 捕获鼠标在组件上的运动轨迹。

from tkinter import *

root = Tk()

def callback(event):
    print("当前位置:", event.x, event.y)

frame = Frame(root, width=200, height=200)
frame.bind("<Motion>", callback)
frame.pack()

mainloop()

此处输入图片的描述

事件序列

Tkinter 使用一种称为事件序列的机制来允许用户定义事件,用户需使用 bind() 方法将具体的事件序列与自定义的方法绑定。事件序列是以字符串的形式表示,可以表示一个或多个相关联的事件(如果是多个事件,那么对应的方法只有在满足所有事件的前提下才会被调用)。

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

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

此处输入图片的描述

modifier

此处输入图片的描述

摘自《零基础入门学习Python》

参考链接:

An Introduction To Tkinter
Tkinter汇总
Python GUI编程(Tkinter)
Tkinter颜色方案举例
python tkinter可以使用的颜色
tkinter学习-菜单与画布
程序设计思想与方法–第五章
用Python中的tkinter模块作图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值