tkinter事件处理

事件类型

用户通过鼠标、键盘、游戏控制设备在与图形界面交互时,就会触发事件。tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型。事件类型有其通用的定义方式。如下:

<[modifier-]…type[-detail]>
  • 其中方括号内的内容为可选参数
  • modifier为组合键的定义,例如,同时按下Ctrl键;
  • type为通用类型,例如,键盘按键(KeyPress)
  • detail用于具体信息,如按下键盘中‘B’键

常用类型

鼠标单击事件
事件名作用
<Button-1>单击鼠标左键
<Button-2>单击鼠标中间键(如果有)
<Button-3>单击鼠标右键
<Button-4>向上滚动滑轮
<Button-5>向下滚动滑轮
鼠标双击事件
事件名作用
<Double-Button-1>鼠标左键双击
<Double-Button-2>鼠标中键双击
<Double-Button-3>鼠标右键双击
鼠标释放事件
事件名作用
<ButtonRelease-1>鼠标左键释放
<ButtonRelease-2>鼠标中键释放
<ButtonRelease-3>鼠标右键释放
鼠标按下并移动事件(即拖动)
事件名作用
<B1-Motion>鼠标左键拖动
<B2-Motion>鼠标中键拖动
<B3-Motion>鼠标右键拖动
鼠标其他操作
事件名作用
<Enter>鼠标进入控件(放到控件上面)
<FocusIn>控件获得焦点
<Leave>鼠标移出控件
<FocusOut>控件失去焦点

另外还有键盘按下事件:
:键盘按下,事件event中的keycode,char都可以获取按下的键值
:键位绑定,回车键,其它还有,,,,,等等

事件绑定

创建组件对象实例时,可以通过其命名参数command指定事件处理函数,如为Button控件绑定单击时间,当控件被单击时执行clickhandler函数处理

b = Button(root, text='按钮', command=clickhandler)

调用组件对象实例方法bind,可以为指定组件实例绑定事件

w.bind('<event>', eventhandler, add='')

其中,为事件类型,eventhandler为事件处理函数,可选参数add默认为’’,表示事件处理函数替代其他绑定,如果为‘+’,则加入事件处理队列。

事件处理函数

对于能通过command传入的函数,其参数没有必须指定第一个参数为event的要求。但是通过bind(含bind_class、bind_all,当然,bind_class第一个参数为className,但其后必须是Event实例)绑定的事件,在定义函数方法时(事件处理可以定义为函数,也可以定义为对象的方法),两者都带一个参数event。触发事件调用处理函数时,将传递Event对象实例。

# 定义函数
def handlerFun(event):
	# 函数体
	pass

event事件对象的属性

通过传递Event事件对象的属性,可以获取相关参数备程序使用。常用的Event事件参数有以下几种:

属性说明
widget产生该事件的控件
x,y当前鼠标位置
x_root, y_root当前鼠标相对于屏幕左上角(0,0)的位置,以像素px为单位。
char字符代码(限键盘事件),作为字符串返回
keysym关键符号(限键盘事件)
keycode关键代码(限键盘事件)
num按钮号码(限鼠标按钮事件)
width, height小部件的新大小(以像素px为单位)(限配置事件)
type事件类型
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值