wxPython的事件处理

事件绑定器:描述组件、事件类型号与事件响应间的关联——实际上是事件类型号的对应实例

wx.EvtHandler:创建某一类型的事件绑定器、事件源与事件响应的绑定


每一EvtHandler保存一张格式为(事件类型,事件源(可选),事件响应)的事件触发表(cf. wxWidgets)

事件处理过程:
1. 事件被触发,创建事件实例,交给事件源的EventHandler.ProcessEvent
2. EventHandler.ProcessEvent检查是否允许处理事件,是则转3,否则转5
3. 检查EventHandler的触发表与其父类的触发表,是否有合适的事件响应,是则转4,否则转5
4. 调用事件响应,若事件响应最后调用了事件实例的Skip()则转5,否则转8
5. 是否是应当广播的事件(CommandEvent与其子类)?是则转6,否则转8
6. 是否处理事件的EventHandler是TheApp?是则转9,否则转7
7. 把事件交给其容器,转2
8. 把事件转交给TheApp处理,转9
9. 结束

一个事件的定义包括:

1. 用wx.NewEventType()定义一个新的事件类型号(整数ID)
2. 用wx.PyEventBinder(事件类型号,事件源的个数(0到2))定义新的事件绑定器
3. 定义一个事件类,接受事件类型号与事件源ID为构造参数,添加一些附加属性
4. 在底层事件源的底层事件响应中,
   1. 产生这个事件类的实例
   2. 设置附加属性
   3. 调用self.GetEventHandler().ProcessEvent(该事件实例) #即等效于把该事件加入处理队列并立即处理之
5. 在高层窗口,用Bind绑定(事件绑定器,事件响应,底层事件源)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值