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实现定制交互式命令行的方法
Jul 03 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
基于wxpython开发的简单gui计算器实例
May 30 Python
python友情链接检查方法
Jul 08 Python
Python爬取三国演义的实现方法
Sep 12 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
Python经典五人分鱼实例讲解
Jan 04 Python
python Scrapy爬虫框架的使用
Jan 21 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 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获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
js代码实现轮播图
2020/05/04 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python设计模式之MVC模式简单示例
2018/01/10 Python
python添加菜单图文讲解
2019/06/04 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
房地产项目建议书
2014/03/12 职场文书
奶茶店创业计划书
2014/08/14 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android