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中用sleep()方法操作时间的教程
May 22 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
简单实现Python爬取网络图片
Apr 01 Python
解读python logging模块的使用方法
Apr 17 Python
django框架自定义用户表操作示例
Aug 07 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
关于Python作用域自学总结
Jun 10 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
Django中session进行权限管理的使用
Jul 09 Python
python可视化大屏库big_screen示例详解
Nov 23 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
对Session和Cookie的区分与解释
2007/03/16 PHP
linux iconv方法的使用
2011/10/01 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python 字符串定义
2009/09/25 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Python如何操作docker redis过程解析
2020/08/10 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
澳大利亚商务邀请函
2014/01/17 职场文书
银行开业庆典方案
2014/02/06 职场文书
经典婚礼主持词
2014/03/13 职场文书
学校安全生产承诺书
2014/05/23 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
Python面向对象编程之类的概念
2021/11/01 Python