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 相关文章推荐
Django如何实现内容缓存示例详解
Sep 24 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
Python的UTC时间转换讲解
Feb 26 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
python中几种自动微分库解析
Aug 29 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
Pytorch可视化的几种实现方法
Jun 10 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
vue之延时刷新实例
2019/11/14 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python装饰器练习题及答案
2019/11/01 Python
django中的数据库迁移的实现
2020/03/16 Python
使用django自带的user做外键的方法
2020/11/30 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
企业统计员岗位职责
2013/12/13 职场文书
生物制药自我鉴定
2014/01/25 职场文书
策划创业计划书
2014/02/06 职场文书
保安队长职务说明书
2014/02/23 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
材料采购员岗位职责
2015/04/03 职场文书
奔腾年代观后感
2015/06/09 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电