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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python实现简单的四则运算计算器
Nov 02 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
Python编程深度学习计算库之numpy
Dec 28 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
详解Python中第三方库Faker
Sep 25 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如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
php将html转为图片的实现方法
2017/05/19 PHP
javascript静态的url如何传递
2007/05/03 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
js自定义回调函数
2015/12/13 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
JS实现图片切换特效
2019/12/23 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
Python 访问限制 private public的详细介绍
2018/10/16 Python
对Python中plt的画图函数详解
2018/11/07 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
加拿大时装零售商:Influence U
2018/12/22 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
初中女生自我鉴定
2013/12/19 职场文书
表扬信格式
2014/01/12 职场文书
铲车司机岗位职责
2014/03/15 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python