专题教程:wxpython中文教程
事件是每个 GUI 应用程序的必要部分. 所有图像应用程序都是事件驱动的.
一个应用程序将对其生命周期产生的事件进行回应. 事件主要是由程序用户产生的.
当然也可能是由其它方式产生,比如互联网连接、窗口管理器以及定时器等.
在调用MainLoop() 方法时,应用程序就等待着事件的产生了. MainLoop() 方法在退出程序时终止.[more…]
在 wxPython 中应用事件功能是十分简单明了的. 只需三步:
识别事件名字:比如 wx.EVT_SIZE, wx.EVT_CLOSE 等.
创建一个事件处理器. 它就是一个方法, 将会在事件产生时调用到.
将事件绑定 (bind) 到对应的事件处理器.
在 wxPython 中说是把一个方法绑定到某个事件. 而有时也说钩起 (hook) 一词.
通过调用 Bind() 方法来绑定事件. 该方法有着以下参数:
Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY)
“event”指某个 EVT_* 对象. 它指明了事件的类型.
“handler”是要调用的一个目标. 换句话说,它是编程者要绑定到某个事件的那个方法.
“source”参数,当我们想要从相同的事件中,依据不同部件而加以区分时,会用到这个参数.
“id”参数,在我们有多个按钮、多个菜单等情况下,它被用来加以区分.
“id2”参数,在需要将一个处理器绑定到某个范围的标示符时,要用到这个参数,比如结合EVT_MENU_RANGE一起使用.
注意,Bind() 方法是在 EvtHandler 类中定义的.
而 wx.Window 正是继承自这个类. wx.Window 又是 wxPython 中大多数部件的基础类. 同时还有与其相反的过程.
如果想要解除某个方法到事件的绑定,可以调用 Unbind() 方法. 它有着跟 Bind() 同样的参数.
表: