python中event type_python中自定义事件 | 学步园

python可以响应内部或者预定义的事件:

self.Bind( wx.EVT_PAINT,  self.OnPaint )

def OnPaint( self, evt ):

# do something here

除此之外,我们开可以自定义事件:

import  wx

import  wx.lib.newevent

MyEvent, EVT_SOME_NEW_EVENT = wx.lib.newevent.NewEvent()

MyCommandEvent, EVT_SOME_NEW_COMMAND_EVENT = wx.lib.newevent.NewCommandEvent()

定义完事件后,就可以预定义事件 一样bind使用了,要发送事件可以

evt = MyEvent()

PostEvent( target, evt )

如果我们想事件中带一些信息,可以这样做:

evt = MyEvent(name='test', time='2012' )

PostEvent( target, evt )

这样可以在响应事件的时候,把上面设置的参数当做事件的属性访问。

但是非常非常重要的一定千万不要定义Id这个属性,这个属性是预定义好的,是从NewEvent那里继承而来,我们可以测试一下:

>>> import  wx

>>> import  wx.lib.newevent

>>> MyEvent, EVT_SOME_NEW_EVENT = wx.lib.newevent.NewEvent()

>>> e=MyEvent()

>>> dir(e)

['ClassName', 'Clone', 'Destroy', 'EventObject', 'EventType', 'GetClassName', 'GetEventObject', 'GetEventType', 'GetId', 'GetSkipped', 'GetTimestamp', 'Id', 'IsCommandEvent', 'IsSameAs', 'ResumePropagation', 'SetEventObject', 'SetEventType', 'SetId', 'SetTimestamp',

'ShouldPropagate', 'Skip', 'Skipped', 'StopPropagation', 'Timestamp', '_GetSelf', '_SetSelf', '__class__', '__del__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__',

'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__swig_destroy__', '__weakref__', 'this', 'thisown']

看到了吧,Id这个属性已经存在,如果你试图自己定义它的值,如:

evt = MyEvent(name='test', time='2012',Id=200 )

总是会失败。但是你可以使用SetId()这个方法来设置它的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值