文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>wxPython学习笔记(二)

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中的一个常用的方法。它的调用方式为:

Bind(event, handler, source=None, id1=wx.ID_ANY, id2=wx.ID_ANY)


     其中的source用来指出event的出处。因为可能事件的出处并不是帮定该事件的控件。比如下面的代码:

def __init__(self, parent, id):
    wx.Frame.__init__(self, parent, id, 'Frame With Button',
    size=(300, 100))
    panel = wx.Panel(self, -1)
    button = wx.Button(panel, -1, "Close", pos=(130, 15),
    size=(40, 40))
    self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
    self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)


    def OnCloseMe(self, event):
        self.Close(True)


    def OnCloseWindow(self, event):
        self.Destroy()


     这里的binder明显是Frame,只有wx.EVT_CLOSE是Frame本身触发的,而EVT_BUTTON却不是。这时候source参数就可以明确的告诉binder这个事实。

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载