wxPython:事件处理一
事件处理是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:事件处理一的更多相关文章
- wxpython学习资源
http://www.cnblogs.com/dyx1024/archive/2012/07/15/2592202.html wxPython:布局管理器sizer介绍 ogs.com/dyx1024 ...
- wxPython:事件
事件──── 是每个 GUI 应用不可舍割的一部分,因为所有的 GUI 应用程序都是基于事件驱动的.从 GUI 程序启动开始,它就回应同户的不同类型的事件.除了用户,也有其它因素可以产生事件,例如:互 ...
- wxPython中文教程入门实例
这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下 wxPython中文教程入门实例 wx.Window 是一个基类 ...
- wxPython学习笔记(三)
要理解事件,我们需要知道哪些术语? 事件(event):在你的应用程序期间发生的事情,它要求有一个响应. 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件 ...
- wxPython学习笔记(二)
如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...
- [Python] wxPython 菜单栏控件学习总结(原创)
1.总结 1.大体创建过程 1.创建一个 菜单栏 : menuBar = wx.MenuBar() 相当于这个白色地方,没有File这个菜单 2.创建 菜单 : fileMenu = wx.Menu ...
- wxPython中按钮、文本控件的简单运用
本节学习图形用户界面 ------------------------ 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地 ...
- wxPython中菜单、按钮学习
---恢复内容开始--- wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.技术上这意味着,我们可以在所有的 子类中使用 wx.Window 的方法.我们这里介绍它的几种 ...
- 【Python】 用户图形界面GUI wxpython II 布局和事件
wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...
随机推荐
- 给 Advice 传递参数
参数绑定是在下面这个方法中做的:org.springframework.aop.aspectj.AbstractAspectJAdvice#invokeAdviceMethod(JoinPoint j ...
- c __cplusplus详解
Code:#ifdef __cplusplusextern "C" { #endif ... #ifdef __cplusplus} #endif 解释:1.c++中定义了__cp ...
- 用SpannableString打造绚丽多彩的文本显示效果
extends:http://www.jianshu.com/p/84067ad289d2 引语 TeXtView大家应该都不陌生,文本展示控件嘛! 就用TextView显示普普通通的文本,OK,很简 ...
- 操作系统中的IPC机制(inter-process Communication)
http://www.cnblogs.com/tsiangleo/p/4902695.html
- DB2 Version 10.5 补丁下载
DB2 Version 10.5 for Linux, UNIX, and Windows fix pack summary https://www.ibm.com/support/knowledge ...
- 文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)
前言: 对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识.然而SVM最核心的地方应该在于核函数和求关于α函数的极值的方法: ...
- AtCoder Beginner Contest 070|Elena|8.12|#471
打了场beginner的AtCoder,也是我第一次打AtCoder,虽然AK了,但是由于手速慢+撒比,才#471… 比赛链接:https://beta.atcoder.jp/contests/abc ...
- POJ 1063 - Flip and Shift
Description This puzzle consists of a random sequence of m black disks and n white disks on an oval- ...
- linux 背单词
命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管 ...
- spark application提交应用的两种方式
bin/spark-submit --help ... ... --deploy-mode DEPLOY_MODE Whether to launch the driver program loc ...