免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2150 | 回复: 0
打印 上一主题 下一主题

wxPython学习笔记(二) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-16 23:57 |只看该作者 |倒序浏览

               
今日女女给我买了个口琴,并千叮咛万嘱咐要我勤加苦练,好在他妈妈面前秀一手。多“体贴”的女朋友了。哎,女朋友的要求就是命令啊,一会儿还要去练习,所以赶快把今天的书读完吧。      今天学习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这个事实。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69119/showart_691201.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP