wxPython事件驱动实例详解


Posted in Python onSeptember 28, 2014

本文实例讲述了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.StaticText(self, -1, 'x:', (10,10))#parent, id, title, point 
    wx.StaticText(self, -1, 'y:', (10,30)) 
    self.st1 = wx.StaticText(self, -1, '', (30, 10)) 
    self.st2 = wx.StaticText(self, -1, '', (30, 30)) 
 
    self.Bind(wx.EVT_MOVE, self.OnMove)  #绑定Frame的move事件 
 
    self.Centre() 
    self.Show(True) 
 
  def OnMove(self, event): 
    x, y = event.GetPosition() 
    self.st1.SetLabel(str(x)) 
    self.st2.SetLabel(str(y)) 
     
app = wx.App()#生成应用程序 
MoveEvent(None, -1, 'move event')#调用自己的类,三个参数为:parent, id , title 
app.MainLoop()#应用程序事件循环

程序运行效果如下图所示:

wxPython事件驱动实例详解

wxStaticText的两个构造函数官方文档如下:
wxStaticText ()
   Default constructor.
wxStaticText (wxWindow *parent, wxWindowID id, const wxString &label, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString&name=wxStaticTextNameStr)
 
Constructor, creating and showing a text control.

The event parameter in the OnMove() method is an object specific to a particular event type. In our case it is the instance of a wx.MoveEvent class. This object holds information about the event. For example the Event object or the position of the window. In our case the Event object is the wx.Frame widget. We can find out the current position by calling the GetPosition() method of the event.

OnMove()方法中的event参数是一种特殊的事件类型,在我们的例子中,它是wx.MoveEvnet类的一个实例.这个对象保存了事件的一些信息,比如这个事件对象或者窗口的位置.在我们例子中事件对象是一个wx.Frame控件.我们可以通过调用事件对象的GetPosition()得到当前位置信息.

Vetoing events

Sometimes we need to stop processing an event. To do this, we call the method Veto().

#!/usr/bin/python 
 
# veto.py 
 
import wx 
 
class Veto(wx.Frame): 
  def __init__(self, parent, id, title): 
    wx.Frame.__init__(self, parent, id, title, size=(250, 200)) 
 
 
    self.Bind(wx.EVT_CLOSE, self.OnClose) 
 
    self.Centre() 
    self.Show(True) 
 
  def OnClose(self, event): 
 
    dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question', 
      wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) 
    ret = dial.ShowModal() 
    if ret == wx.ID_YES: 
      self.Destroy() 
    else: 
      event.Veto() 
 
app = wx.App() 
Veto(None, -1, 'Veto') 
app.MainLoop()

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

Python 相关文章推荐
在Python操作时间和日期之asctime()方法的使用
May 22 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
对python中url参数编码与解码的实例详解
Jul 25 Python
Python中print函数简单使用总结
Aug 05 Python
Python 调用 Windows API COM 新法
Aug 22 Python
Python单链表原理与实现方法详解
Feb 22 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
Python-for循环的内部机制
Jun 12 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 Python
python中的多重继承实例讲解
Sep 28 #Python
python错误处理详解
Sep 28 #Python
python中实现定制类的特殊方法总结
Sep 28 #Python
python之wxPython菜单使用详解
Sep 28 #Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 #Python
python之wxPython应用实例
Sep 28 #Python
Python实现从url中提取域名的几种方法
Sep 26 #Python
You might like
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
vuex vue简单使用知识点总结
2019/08/29 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
python模拟表单提交登录图书馆
2018/04/27 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Python多线程获取返回值代码实例
2020/02/17 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
Python是怎样处理json模块的
2020/07/16 Python
详细分析Python collections工具库
2020/07/16 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
Oracle性能调优原则
2012/05/03 面试题
外贸实习生自荐信范文
2013/11/24 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
龙门石窟导游词
2015/02/02 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
golang生成并解析JSON
2022/04/14 Golang
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs