- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例如用户敲击键盘上的某一个键或是.doc
所谓event事件就是程序上发生的事。例如用户敲击键盘上的某一个键或是点击移动鼠标。而对于这些事件,程序需要做出反应。
Tkinter提供的组件通常都包含许多内在行为,例如当按钮被点击时执行特定操作或是当一个输入栏成为焦点,而您又敲击了键盘上的某些按键,您所输入的内容就会显示在输入栏内。
不过,Tkinter的事件处理允许您创建、修改或是删除这些行为。
首先给出如下定义:
事件处理者:程序中在当事件发生时被调用的某个函数。
当您为您的程序建立一个处理某一事件的事件处理者,称之为绑定。
?
绑定级别:
三个级别:
实例绑定:将事件与一特定的组件实例绑定。例如您可以将按下PageUp按键这一事件与一个Canvas组件实例绑定,来处理Canvas的翻页。调用组件实例的.bind()函数为组件实例绑定事件。例如,假设您声明了一个名为canvas的Canvas组件对象。您想在canvas上,当按下鼠标中键时画上一条线。您可以这样实现:canvas.bind(“Button-2”, drawline)
其中bind函数的第一个参数是事件描述符,他指定无论什么时候在canvas上,当按下鼠标中键时就调用事件处理函数drawline进行画线的任务。特别的是:drawline后面的圆括号是省略的。Tkinter会将此函数填入相关参数后调用运行。在这里只是连结性声明而以。
类绑定:将事件与一组件类绑定。例如您可以绑定按钮组件类,使得所有按钮实例都可以处理鼠标中键事件作相应的操作。调用任意组件实例的.bind_class()函数为特定组件类绑定事件。例如,假设您声明了若干个Canvas组件对象。您想在这些对象上,当按下鼠标中键时都能画上一条线。您可以这样实现:widget.bind_class(“Canvas”, “Button-2”, drawline)
其中widget是任意组件对象。
?
程序界面绑定:当无论在哪一组件实例上触发某一事件,程序都作出相应的处理。例如您可能会将PrintScreen键与程序中的所有组件对象绑定,这样的话整个程序界面就能处理打印屏幕的事件了。调用任意组件实例的.bind_all()函数为程序界面绑定事件。例如您可以这样实现打印屏幕:widget.bind_all( “Key-print”,printScreen)。
?
事件队列:
Tkinter为您定义正确的事件提供了强大的通用方式。一般来说,事件队列是包含了一个或多个事件类型的字符串。每一个事件类型指定了一项事件,当有多项事件类型包含于事件队列中,当且仅当描述符中全部事件发生时才调用处理函数。
事件类型的通用格式:
[modifier-]…type[-detail]
事件类型必须放置于尖括号内。type描述了通用类型,例如键盘按键、鼠标点击。
modifier用于组合键定义,例如Control、Alt。detail用于明确定义是哪一个键或按钮的事件,例如1表示鼠标左键、2表示鼠标中键。
举例:Button-1 按下鼠标左键。
KeyPress-A 按下键盘上的A键
Control-Shift-KeyPress-A 同时按下了Control、Shift、A三键。
?
?
事件类型:
键盘事件:
名 称 描 述KeyPress按下键盘某键时触发,可以在detail部分指定是哪个键。KeyRelease按下键盘某键时触发,可以在detail部分指定是哪个键。?
鼠标事件:
名 称 描 述ButtonPress按下鼠标某键,可以在detail部分指定是哪个键。ButtonRelease释放鼠标某键,可以在detail部分指定是哪个键。Motion点中组件的同时托拽组件移动时触发。Enter当鼠标指针移进某组件时,该组件触发。Leave当鼠标指针移出某组件时,该组件触发。MouseWheel当鼠标滚轮滚动时触发。?
窗体事件:
?
名 称 描 述Visibility当组件变为可视状态时触发。Unmap当组件由显示状态变为隐藏状态时触发。Map当组件由隐藏状态变为显示状态时触发。Expose当组件从原本被其他组件遮盖的状态中暴露出来时触发。FocusIn组件获得焦点时触发。FocusOut组件失去焦点时触发。Circulate当窗体由于系统协议要求在堆栈中置顶或压底时触发,Tk中忽略此细节。Colormap当窗体的颜色或外貌改变时触发,Tk中忽略此
文档评论(0)