事件处理是wxPython程序工作的基本机制,先看几个术语:

  • 事件(event):应该程序期间发生的事情,要求有一个响应。
  • 事件对象(event object):代表具体一个事件,包括事件的数据属性,为wx.Event或其子类的实例,如wx.CommandEvent/wx.MouseEvent。
  • 事件类型(event type):wxPython分配给每个事件对象的一个整数ID

wx.Event的子类:

  • wx.CloseEvent:框架关闭时触发,事件类型有普通框架关闭和系统关闭事件。
  • wx.CommandEvent:与窗口部件的简单的交互都会触发此事件,如按钮单击,菜单项选择等。
  • wx.KeyEvent:按键动作。
  • wx.MouseEvent:鼠标事件。
  • wx.PaintEvent:当窗口内容被重画时触发。
  • wx.SizeEvent:窗口大小或布局改变时触发。
  • wx.TimerEvent:由类wx.Timer创建,定期事件。

wx.EvtHandler的Bind方法:

它用来创建事件绑定,原型如下:

Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY)

它将一个事件和一个对象与一个事件处理函数绑定。

看一个菜单项选择事件绑定的实例:

#!/usr/bin/env python
# -*- coding: utf- -*- '''
Function:常用对话框实例
Input:NONE
Output: NONE
author: socrates
blog:http://www.cnblogs.com/dyx1024/
date:--
''' import wx
import wx.py.images class ToolbarFrame(wx.Frame):
def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, 'Toolbars', size = (, )) panel = wx.Panel(self)
panel.SetBackgroundColour('White') #创建状态栏
statusBar = self.CreateStatusBar() #创建工具栏
toolbar = self.CreateToolBar()
#增加一个工具
toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "New", "Long help for 'New'")
toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "Edit", "Long help for 'Edit'")
#准备显示
toolbar.Realize() #创建菜单
menuBar = wx.MenuBar() menu1 = wx.Menu()
menuBar.Append(menu1, "&File") #菜单项目1 menu2 = wx.Menu() #菜单内容&表示随后的字符为热键,参数3为在状态栏上显示的菜单项说明
menu_item1 = menu2.Append(wx.NewId(), "&Copy", "Copy in status bar")
menu2.Append(wx.NewId(), "C&ut", "")
menu2.Append(wx.NewId(), "Paste", "")
menu2.AppendSeparator()
menu2.Append(wx.NewId(), "&Options...", "Display Options")
menuBar.Append(menu2, "&Edit")
self.SetMenuBar(menuBar) #菜单项事件绑定
self.Bind(wx.EVT_MENU, self.OnCloseMe, menu_item1) #消息对话框
def OnCloseMe(self, event):
dlg = wx.MessageDialog(None, u"消息对话框测试", u"标题信息", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
self.Close(True)
dlg.Destroy()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent = None, id = -)
frame.Show()
app.MainLoop()#!/usr/bin/env python
# -*- coding: utf- -*- '''
Function:常用对话框实例
Input:NONE
Output: NONE
author: socrates
blog:http://www.cnblogs.com/dyx1024/
date:--
''' import wx
import wx.py.images class ToolbarFrame(wx.Frame):
def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, 'Toolbars', size = (, )) panel = wx.Panel(self)
panel.SetBackgroundColour('White') #创建状态栏
statusBar = self.CreateStatusBar() #创建工具栏
toolbar = self.CreateToolBar()
#增加一个工具
toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "New", "Long help for 'New'")
toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "Edit", "Long help for 'Edit'")
#准备显示
toolbar.Realize() #创建菜单
menuBar = wx.MenuBar() menu1 = wx.Menu()
menuBar.Append(menu1, "&File") #菜单项目1 menu2 = wx.Menu() #菜单内容&表示随后的字符为热键,参数3为在状态栏上显示的菜单项说明
menu_item1 = menu2.Append(wx.NewId(), "&Copy", "Copy in status bar")
menu2.Append(wx.NewId(), "C&ut", "")
menu2.Append(wx.NewId(), "Paste", "")
menu2.AppendSeparator()
menu2.Append(wx.NewId(), "&Options...", "Display Options")
menuBar.Append(menu2, "&Edit")
self.SetMenuBar(menuBar) #菜单项事件绑定
self.Bind(wx.EVT_MENU, self.OnCloseMe, menu_item1) #消息对话框
def OnCloseMe(self, event):
dlg = wx.MessageDialog(None, u"消息对话框测试", u"标题信息", wx.YES_NO | wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_YES:
self.Close(True)
dlg.Destroy()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent = None, id = -)
frame.Show()
app.MainLoop()

wxPython:事件处理一的更多相关文章

  1. wxpython学习资源

    http://www.cnblogs.com/dyx1024/archive/2012/07/15/2592202.html wxPython:布局管理器sizer介绍 ogs.com/dyx1024 ...

  2. wxPython:事件

    事件──── 是每个 GUI 应用不可舍割的一部分,因为所有的 GUI 应用程序都是基于事件驱动的.从 GUI 程序启动开始,它就回应同户的不同类型的事件.除了用户,也有其它因素可以产生事件,例如:互 ...

  3. wxPython中文教程入门实例

    这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下     wxPython中文教程入门实例 wx.Window 是一个基类 ...

  4. wxPython学习笔记(三)

    要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...

  5. wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  6. [Python] wxPython 菜单栏控件学习总结(原创)

    1.总结 1.大体创建过程 1.创建一个 菜单栏  : menuBar = wx.MenuBar() 相当于这个白色地方,没有File这个菜单 2.创建 菜单 : fileMenu = wx.Menu ...

  7. wxPython中按钮、文本控件的简单运用

    本节学习图形用户界面 ------------------------ 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地 ...

  8. wxPython中菜单、按钮学习

    ---恢复内容开始--- wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.技术上这意味着,我们可以在所有的 子类中使用 wx.Window 的方法.我们这里介绍它的几种 ...

  9. 【Python】 用户图形界面GUI wxpython II 布局和事件

    wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...

随机推荐

  1. rtmp推送aac没有声音的问题记录

      症状是这样的:用librtmp推流aac后,用vlc能收到推流的声音,但是用flash却播放不了推流的声音.   查了几天,用工具抓取推流的数据,发现rtmp数据包中的头部信息有一个Chunk S ...

  2. yum安装VirtualBox

    参考官方文档: https://www.virtualbox.org/wiki/Linux_Downloads 配置yum源: vim /etc/yum.repos.d/virtualbox.repo ...

  3. sklearn中的数据集的划分

    sklearn数据集划分方法有如下方法: KFold,GroupKFold,StratifiedKFold,LeaveOneGroupOut,LeavePGroupsOut,LeaveOneOut,L ...

  4. Android Selinux

    https://blog.csdn.net/rikeyone/article/details/84337115   如何快速定位SElinux问题并修复? https://blog.csdn.net/ ...

  5. Linux中 SonarQube代码质量管理平台安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  6. Android摸索一环境搭建

    用户场景:做语音保全,首先要拨打400号码,听到语音后需要先按1然后再拨打对方号码,那么问题就来了,如果我记不清楚对方号码!是不是很苦逼----我要先找到对方号码然后用笔或者其他方式把这个号码记录下来 ...

  7. uni-app,wex5,APPcan,ApiCloud几款国内webapp开发框架的选型对比

    框架列表. https://www.cnblogs.com/xiaxiaxia/articles/5705557.html 前言 近期,要开一个新的项目,APP类型.最重要的需求就是能够随时调整APP ...

  8. 简单的Git流程

    一.安装cygwin 略 二. 1.创建一个文件 $echo "中华人民共和国">>abc.txt 2.添加到文件追踪 $git add abc.txt 上一行是提交一 ...

  9. 主从读写分离----mysql-proxy0.8.5安装与配置

    废话不多说,直接开干: 1.安装环境: yum -y install libevent glib2 lua gcc gcc-c++ autoconf mysql-devel libtool pkgco ...

  10. 简单示例用例(Simple Example Use Cases)--hive GettingStarted用例翻译

    1.MovieLens User Ratings First, create a table with tab-delimited text file format: 首先,创建一个通过tab分隔的表 ...