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中函数的参数传递
Jun 21 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python字符串处理实例详解
May 18 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python实现感知机(PLA)算法
Dec 20 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
实例讲解Python3中abs()函数
Feb 19 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python使用socket实现的传输demo示例【基于TCP协议】
Sep 24 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php实现的漂亮分页方法
2014/04/17 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
php支付宝接口用法分析
2015/01/04 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
python 图片验证码代码
2008/12/07 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python 实现线程之间的通信示例
2020/02/14 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
写好自荐信的技巧
2013/11/08 职场文书
公司市场部岗位职责
2013/12/02 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
西岭雪山导游词
2015/02/06 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
MySQL注入基础练习
2021/05/30 MySQL
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python