wxPython学习笔记(二)
时间:2008-05-16 来源:mcknight
今日女女给我买了个口琴,并千叮咛万嘱咐要我勤加苦练,好在他妈妈面前秀一手。多“体贴”的女朋友了。哎,女朋友的要求就是命令啊,一会儿还要去练习,所以赶快把今天的书读完吧。
今天学习wxPython的事件驱动模型(event-driven)。wxPython中所有的事件都是wx.Event或其子类的实例罢了。这里需要区分下面两个概念:event binder是wxPython中的一个对象,它包含了一个特定控件(widget),事件类型,和响应函数的对应关系;wx.EventHandler是wxPython中的一个类,它允许她的实例实现事件,事件类型以及响应函数的绑带。
在wxPython中,一个事件类可以包含不同的事件类型。每一个事件类型都有自己的 event binder。
wxPython中任何可以响应事件的对象都是wx.EvtHandler的子类。所有的窗口对象(前面已经提到任何可见的部分实际上都可以被称作窗口对象)也是wx.EvtHandler的子类,因此所有的控件都可以响应事件。除此之外,一些非窗口对象,比如wx.App也可以响应事件。Bind()是wx.EvtHandler中的一个常用的方法。它的调用方式为:
其中的source用来指出event的出处。因为可能事件的出处并不是帮定该事件的控件。比如下面的代码:
这里的binder明显是Frame,只有wx.EVT_CLOSE是Frame本身触发的,而EVT_BUTTON却不是。这时候source参数就可以明确的告诉binder这个事实。
今天学习wxPython的事件驱动模型(event-driven)。wxPython中所有的事件都是wx.Event或其子类的实例罢了。这里需要区分下面两个概念:event binder是wxPython中的一个对象,它包含了一个特定控件(widget),事件类型,和响应函数的对应关系;wx.EventHandler是wxPython中的一个类,它允许她的实例实现事件,事件类型以及响应函数的绑带。
在wxPython中,一个事件类可以包含不同的事件类型。每一个事件类型都有自己的 event binder。
wxPython中任何可以响应事件的对象都是wx.EvtHandler的子类。所有的窗口对象(前面已经提到任何可见的部分实际上都可以被称作窗口对象)也是wx.EvtHandler的子类,因此所有的控件都可以响应事件。除此之外,一些非窗口对象,比如wx.App也可以响应事件。Bind()是wx.EvtHandler中的一个常用的方法。它的调用方式为:
Bind(event, handler, source=None, id1=wx.ID_ANY, id2=wx.ID_ANY) |
其中的source用来指出event的出处。因为可能事件的出处并不是帮定该事件的控件。比如下面的代码:
def __init__(self, parent, id):
|
这里的binder明显是Frame,只有wx.EVT_CLOSE是Frame本身触发的,而EVT_BUTTON却不是。这时候source参数就可以明确的告诉binder这个事实。
相关阅读 更多 +