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字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
python协程用法实例分析
Jun 04 Python
简单谈谈Python中的闭包
Nov 30 Python
python django事务transaction源码分析详解
Mar 17 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
Pytorch之parameters的使用
Dec 31 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
Python Pygame实现俄罗斯方块
Feb 19 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
js实现DIV的一些简单控制
2007/06/04 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
面向切面编程(AOP)的理解
2015/05/01 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python多进程机制实例详解
2015/07/02 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
教师政风行风评议心得体会
2014/10/21 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
python绘制箱型图
2021/04/27 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
为Centos安装指定版本的Docker
2022/04/01 Servers