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

本文实例讲述了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 Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

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

(0)

相关推荐

  • windows下wxPython开发环境安装与配置方法

    安装文件准备: 安装文件 下载地址 python-2.6.2.msi http://www.python.org/download/ wxPython2.8-win32-unicode-2.8.10.1-py26.exe wxPython2.8-win32-docs-demos-2.8.10.1.exe http://www.wxpython.org/download.php py2exe-0.6.9.win32-py2.6.exe http://sourceforge.net/projects

  • python通过wxPython打开一个音频文件并播放的方法

    本文实例讲述了python通过wxPython打开一个音频文件并播放的方法.分享给大家供大家参考.具体如下: 这段代码片段使用wx.lib.filebrowsebutton.FileBrowseButton控件打开一个wav文件,使用wx.Sound播放 import wx import wx.lib.filebrowsebutton class MyFrame(wx.Frame): def __init__(self, parent, mytitle, mysize): wx.Frame.__

  • wxPython 入门教程

    这篇文章是关于 wxPython,但 wxPython 实际是两件事物的组合体:Python 脚本语言和 GUI 功能的 wxWindows 库(关于 wxWindows 的介绍,请参阅 developerWorks上的 "细述 wxWindows" ).wxWindows 库是为了最大可移植性的 C/C++ 库,而抽取 GUI 功能.所以 wxWindows 应用程序与生俱来地可以运行在 Windows.带 X.KDE 或 Gnome 的 UNIX 或者 wxWindows 已移植到

  • 使用wxpython实现的一个简单图片浏览器实例

    上次我爬了n多图片,但是浏览的时候有一个问题. 图片浏览器的浏览一般都是按名称排的,而我对图片的命名是按照数字递增的.比如3总是会排在10后面,也就无法快速地浏览图片了. 所以,出于方便自己查阅图片,也出于学习,决定做一个自己的图片浏览器. 目标:浏览目录,通过滚轮不断显示同一个文件夹下的图片,并自定义排序. 步骤0:要实现图形界面,我使用wxPython. 至于如何安装和简单地使用wxpython,可以到网上检索,一大堆资料. 以下步骤默认你已经知道如何生成一个自己的frame. 步骤1:浏览

  • wxpython 学习笔记 第一天

    它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定.而wxWidgets是用C++语言写成的. 和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件.这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能. wxPython是跨平台的.这意味着同一个程序可以不经修改地在多种平台上运行.现今支持的平台有:32位微软Windows操作系统.大多数Unix或类Unix系统.苹果Mac OS X. 由于使用Python作为

  • wxPython框架类和面板类的使用实例

    本文实例讲述了wxPython框架类和面板类的使用方法,分享给大家供大家参考.具体分析如下: 实现代码如下: import wx class MyApp(wx.App): #自定义应用程序类,类中调用自定义的框架类 def OnInit(self): self.frame = MyFrame(None, title = "My Main Frame jb51.net") self.SetTopWindow(self.frame) self.frame.Show() return Tru

  • wxpython学习笔记(推荐查看)

    一.简介 wxPython是Python编程语言的一个GUI工具箱.他使得Python程序员能够轻松的创建具有健壮.功能强大的图形用户界面的程序.它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定.而wxWidgets是用C++语言写成的.和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件.这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能.wxPython是跨平台的.这意味着同一个程序可以不经修改地在多种平

  • 在Ubuntu系统下安装使用Python的GUI工具wxPython

    (一)wxpython的安装 Ubuntu下的安装,还是比较简单的. #使用:apt-cache search wxpython 测试一下,可以看到相关信息 dizzy@dizzy-pc:~/Python$ apt-cache search wxpython cain - simulations of chemical reactions cain-examples - simulations of chemical reactions cain-solvers - simulations of

  • wxpython中Textctrl回车事件无效的解决方法

    本文实例讲述了wxpython中Textctrl回车事件无效的解决方法.分享给大家供大家参考,具体如下: 今天使用wxptyhon的Textctrl控件开发客户端时遇到了一个问题, 按照HTML表单的逻辑, 我们在Textctrl里回车应该提交查询, 但是wxpython的Textctrl很奇怪, 回车了居然是像Tab作用一样跳转到下一个控件.这样的话,要完成查询, 要么是鼠标点击按钮, 要么需要按两次或者两次以上. Google了一下, 无答案, 但是得到了一些有用的资料: TextCtrl支

  • wxPython学习之主框架实例

    本文实例讲述了wxPython主框架的简单用法,分享给大家供大家参考.具体如下: 程序代码如下: import wx class MyApp(wx.App): def OnInit(self): wx.MessageBox("Hello jb51.net") return True #返回True表示框架正常运行 if __name__ == "__main__": app = MyApp(False) #False参数表示不进行文件重定向 app.MainLoop

  • Python实例之wxpython中Frame使用方法

    本节为大家分享的例子是wxpython Frame的用法. 例子: 复制代码 代码如下: #!/usr/bin/python  # -*- coding: GBK -*-  # simple.py import wx app = wx.App()  frame = wx.Frame(None)  frame.Show()  app.MainLoop() 例2, 复制代码 代码如下: #!/usr/bin/python告诉程序 python 解释器的路径,只是在 linux 系统下有用,在 Win

  • wxPython事件驱动实例详解

    本文实例讲述了wxPython的事件驱动机制,分享给大家供大家参考.具体方法如下: 先来看看如下代码: #!/usr/bin/python # moveevent.py import wx #导入wx库 class MoveEvent(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(250, 180)) #窗口大小为(250, 180) wx.St

  • wxPython中文教程入门实例

    wxPython中文教程入门实例 wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.可以在所有的子类中使用 wx.Window 的方法. wxPython的几种方法:* SetTitle( string title ) -- 设置窗口标题.只可用于框架和对话框. * SetToolTip( wx.ToolTip tip ) -- 为窗口添加提示. * SetSize( wx.Size size ) -- 设置窗口的尺寸. * SetPosition( wx.Poin

随机推荐