鱼c笔记——Python 的 GUI 编程(十一):Tkinter 事件绑定

一个 Tkinter 应用程序大部分时间是花在事件循环当中的,也就是通过 mainloop() 进入的事件循环。

事件可以有各种来源:用户触发的鼠标和键盘操作和窗口管理器触发的重绘事件(在多数情况下是由用户简介引起的)

Tkinter 给我们提供了一个强大的机制去管理这些事件,去定义这些事件的操作。对每一个组件来说,可以通过 bind() 的方法来将自己定义的函数或方法绑定到具体的事件上。

widget.bind(event, handler)

 

当被触发的事件满足该组件绑定的事件的时候,Tkinter 就会带着事件对象(Event、事件本身的描述)去调用自定义的 handler() 方法。

目录

实例

捕获鼠标点击的位置的演示

关于键盘的演示

利用事件获取鼠标实时位置的方式

事件序列

type

modifier

Event对象

Key names


实例

捕获鼠标点击的位置的演示

from tkinter import *

root =Tk()

#当触发<Button-1>,Tkinter会带着事件本身去调用callback,会把它传入到callback中,因此要个形参来接收对应的事件描述
def callback(event):
    print("点击位置:", event.x, event.y) #这个x和y表示的是相对于应用程序左上角的x和y。root的x和y相对的是屏幕

frame = Frame(root, width=200, height=200)
frame.bind("<Button-1>", callback)  # -左边是事件本身,右边是事件详细描述。Button表示的是鼠标的点击事件,1表示的是左键,2代表滚轮,3表示右键,4、5对于Linux系统才有用,表示滚轮向上滚和向下滚。对于Windows和Mac系统来说则是通过mousewhell来表示用户是向上滚还是向下滚了滚轮。
frame.pack()

mainloop()

关于键盘的演示

from tkinter import *

root =Tk()

def callback(event):
    print(event.char)  #获取当前键盘按下的字符

frame = Frame(root, width=200, height=200)
frame.bind("<Key>", callback)  #组件想要响应键盘事件,组件必须获得焦点,组件才会响应键盘来的消息。因为一个窗口可以有很多组件,键盘一次敲击不知道给哪个组件。
frame.focus_set()  #通过focus_set方法获得焦点。也可以设置Frame的takefocus选项为True,然后使用Tab将焦点转移上来
frame.pack()

mainloop()

利用<Motion>事件获取鼠标实时位置的方式

from tkinter import *

root =Tk()

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

frame = Frame(root, width=200, height=200)
frame.bind("<Motion>", callback)  #Motion事件表示当鼠标进入组件时,就会响应这个事件
frame.focus_set()
frame.pack()

mainloop()

<

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值