tkinter事件处理

事件类型

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

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

常用类型

鼠标单击事件
事件名 作用
单击鼠标左键
单击鼠标中间键(如果有)
单击鼠标右键
向上滚动滑轮
向下滚动滑轮
鼠标双击事件
事件名 作用
鼠标左键双击
鼠标中键双击
鼠标右键双击
鼠标释放事件
事件名 作用
鼠标左键释放
鼠标中键释放
鼠标右键释放
鼠标按下并移动事件(即拖动)
事件名 作用
鼠标左键拖动
鼠标中键拖动
鼠标右键拖动
鼠标其他操作
事件名 作用
鼠标进入控件(放到控件上面)
控件获得焦点
鼠标移出控件
控件失去焦点

另外还有键盘按下事件:
:键盘按下,事件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 事件类型

你可能感兴趣的:(python,tkinter)