wxPython的事件处理过程详解

本文深入探讨wxPython的事件处理机制,通过图解和代码示例解释了事件的产生、分发以及如何绑定和处理低级与高级事件。特别讨论了鼠标事件和按钮点击事件在不同对象上的绑定差异,并强调了Skip()方法在高级事件处理中的关键作用。
摘要由CSDN通过智能技术生成
 wxPython的事件处理过程设计得相当合理,也做了很多简化工作(就是对于程序员更友好),但这个冰山之下,还是有很多复杂的主题,通过学习wxPython in action,终于搞明白了一些

先看两张最重要的图(还是用的我老博客livahu的两张图,没有修改图注)


现在先说说图1

wxPython应用程序使用基于事件的控制流。应用程序的大部分时间花费在一个主循环中,等待事件并分派它们到适当的处理器函数。

从用户的角度上来看,wxPython程序大部分时间什么也不做,一直闲着直到用户或系统做了些什么来触发这个事件处理函数(EventHandler)。 wxPython程序的结构就是一个事件驱动程序体系的例子。事件驱动系统的主循环类似于客户服务呼叫中心的操作者。当没有呼叫的进入的时候,这个操作者处于等待状态。当一个事件发生的时候,如电话铃响了,这个操作者开始一个响应过程,他与客户交谈直到他获得足够的信息以分派该客户给一个合适的回答者。然后操作者等待下一个事件。

再看图2

wxPython的事件类都是wx.Event类的子类,wxPython的事件分为低级事件和高级事件。鼠标敲击、移动这样的事件是低级事件,而它们可以构成高级事件,如选择一个下拉列表中的一项

由wxPython窗口部件引起的高级事件是类wx.CommandEvent的子类,默认情况,只有wx.CommandEvent及其子类的实例向上展开至容器级。其它的所有事件不这样做。

明白了这两点,就好说了,我将结合一段代码来说明问题


# !/usr/bin/env python 
#
-*- coding:utf-8 -*- 
  
import  wx 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值