wxpython中自定义事件的实现与使用方法分析


Posted in Python onJuly 21, 2016

本文实例讲述了wxpython中自定义事件的实现与使用方法。分享给大家供大家参考,具体如下:

创建自定义事件的步骤:

① 定义事件类,该事件类必须继承自wx.PyCommandEvent,并定义get和set方法来获取和设置事件参数。

② 创建一个事件类型和一个绑定器对象去绑定该事件到特定的对象。

③ 创建自定义事件对象,设置事件参数,并且使用ProcessEvent()方法将这个实例引入事件处理系统。

④ 绑定自定义事件的event handler。

⑤ 在event handler中响应事件。

示例代码:

#!/usr/bin/env python
#coding=utf-8
import wx
class MyTestEvent(wx.PyCommandEvent):  #1 定义事件
  def __init__(self, evtType, id):
    wx.PyCommandEvent.__init__(self, evtType, id)
    self.eventArgs = ""
  def GetEventArgs(self):
    return self.eventArgs
  def SetEventArgs(self, args):
    self.eventArgs = args
myEVT_MY_TEST = wx.NewEventType() #2 创建一个事件类型
EVT_MY_TEST = wx.PyEventBinder(myEVT_MY_TEST, 1) #3 创建一个绑定器对象
class MyFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300),pos=(300,300))
    panel = wx.Panel(self, -1)
    self.button1 = wx.Button(panel,id=-1,pos=(40, 40),label="button1")
    self.Bind(wx.EVT_BUTTON, self.OnButton1Click, self.button1)
    self.Bind(EVT_MY_TEST, self.OnHandle)# 4绑定事件处理函数
  def OnButton1Click(self,event):
    self.OnDoTest()
  def OnHandle(self,event):#8 事件处理函数
    dlg = wx.MessageDialog(self, event.GetEventArgs(),'A Message Box',wx.OK | wx.ICON_INFORMATION)
    dlg.ShowModal()
    dlg.Destroy()
  def OnDoTest(self):
    evt = MyTestEvent(myEVT_MY_TEST, self.button1.GetId()) #5 创建自定义事件对象
    evt.SetEventArgs("test event")  # 6添加数据到事件
    self.GetEventHandler().ProcessEvent(evt) #7 处理事件
if __name__ == '__main__':
  app = wx.PySimpleApp()
  frame = MyFrame()
  frame.Show(True)
  app.MainLoop()

说明:

1.定义MyTestEvent 类为wx.PyCommandEvent的子类,wx.PyCommandEvent是wxPython特定的结构,可以用来创建新的事件类并且可以把C++类和你的Python代码连接起来。

2. wx.NewEventType()类似于wx.NewId();它返回一个唯一的事件类型ID。

3.创建一个绑定器对象,第二个参数的取值位于[0,2]之间,它代表wxId标识号,该标识号用于wx.EvtHandler.Bind()方法去确定哪个对象是事件的源。

4.绑定事件的处理器。

5. 创建自定义事件对象,并把触发事件的控件的ID作为参数传给MyTestEvent的构造函数。

6.添加数据给事件。可以将一些您需要的信息通过这种方法传递进去。

7. ProcessEvent()的调用将这个新事件引入到事件处理系统中,GetEventHandler()调用返回wx.EvtHandler的一个实例,也就是窗口对象本身,即:MyFrame。

8.绑定事件处理函数,这里的事件处理方式是通过MessageDialog显示出传入的事件参数。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
比较详细Python正则表达式操作指南(re使用)
Sep 06 Python
Python天气预报采集器实现代码(网页爬虫)
Oct 07 Python
python实现自动更换ip的方法
May 05 Python
NumPy 数组使用大全
Apr 25 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
python队列原理及实现方法示例
Nov 27 Python
Django 批量插入数据的实现方法
Jan 12 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
在django中form的label和verbose name的区别说明
May 20 Python
Python 内置函数速查表一览
Jun 02 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 #Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 #Python
python装饰器初探(推荐)
Jul 21 #Python
python魔法方法-自定义序列详解
Jul 21 #Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 #Python
分享python数据统计的一些小技巧
Jul 21 #Python
python中print的不换行即时输出的快速解决方法
Jul 20 #Python
You might like
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
入党自我评价优缺点
2014/01/25 职场文书
网络编辑岗位职责范本
2014/02/10 职场文书
优秀教师工作感言
2014/02/16 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
商务考察邀请函模板
2015/02/02 职场文书
售后服务质量承诺书
2015/04/29 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL