wxpython 最小化到托盘与欢迎图片的实现方法


Posted in Python onJune 09, 2014

一直在学习系统托盘的实现,于是自己写了一个简单的系统托盘实例,右键包括演示、最大化、最小化、退出和关于。在python2.6下测试通过。

注意,本节分享的python实例代码,这里是托盘上的图标弹出菜单是覆盖了CreatePopupMenu。

也可以绑定2个方法,一个wx.EVT_TASKBAR_RIGHT_DOWN,方法里面生成menu,然后再来一个wx.EVT_MENU,定义要处理的事件函数。

还有一个就是Wx窗体上的最小化按钮,触发的事件是 wx.EVT_ICONIZE,而根本就没有定义什么wx.EVT_MINIMIZE,但是最大化,有个wx.EVT_MAXIMIZE。

#!/usr/bin/python  
# _*_ coding: utf-8 _*_  import wx  
class TaskBarIcon(wx.TaskBarIcon):  
    ID_Hello = wx.NewId()  
    def __init__(self, frame):  
        wx.TaskBarIcon.__init__(self)  
        self.frame = frame  
        self.SetIcon(wx.Icon(name='wx.ico', type=wx.BITMAP_TYPE_ICO), 'TaskBarIcon!')  
        self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarLeftDClick)  
        self.Bind(wx.EVT_MENU, self.OnHello, id=self.ID_Hello)  
    def OnTaskBarLeftDClick(self, event):  
        if self.frame.IsIconized():  
           self.frame.Iconize(False)  
        if not self.frame.IsShown():  
           self.frame.Show(True)  
        self.frame.Raise()  
    def OnHello(self, event):  
        wx.MessageBox('Hello From TaskBarIcon!', 'Prompt')  
    # override  
    def CreatePopupMenu(self):  
        menu = wx.Menu()  
        menu.Append(self.ID_Hello, 'Hello')  
        return menu  
class Frame(wx.Frame):  
    def __init__(  
            self, parent=None, id=wx.ID_ANY, title='TaskBarIcon', pos=wx.DefaultPosition,  
            size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE  
            ):  
        wx.Frame.__init__(self, parent, id, title, pos, size, style)    
        # create a welcome screen  
        screen = wx.Image(self.screenIm).ConvertToBitmap()  
        wx.SplashScreen(screen, wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,1000, None, -1)  
        wx.Yield()  
        self.SetIcon(wx.Icon('wx.ico', wx.BITMAP_TYPE_ICO))  
        panel = wx.Panel(self, wx.ID_ANY)  
        button = wx.Button(panel, wx.ID_ANY, 'Hide Frame', pos=(60, 60))  
        sizer = wx.BoxSizer()  
        sizer.Add(button, 0)  
        panel.SetSizer(sizer)  
        self.taskBarIcon = TaskBarIcon(self)          
        # bind event  
        self.Bind(wx.EVT_BUTTON, self.OnHide, button)  
        self.Bind(wx.EVT_CLOSE, self.OnClose)  
        self.Bind(wx.EVT_ICONIZE, self.OnIconfiy) # 最小化事件绑定  
    def OnHide(self, event):  
        self.Hide()  
    def OnIconfiy(self, event):  
        wx.MessageBox('Frame has been iconized!', 'Prompt')  
        event.Skip()  
    def OnClose(self, event):  
        self.taskBarIcon.Destroy()  
        self.Destroy()  
def TestFrame():  
    app = wx.PySimpleApp()  
    frame = Frame(size=(640, 480))  
    frame.Centre()  
    frame.Show()  
    app.MainLoop()  
if __name__ == '__main__':  
    TestFrame()
Python 相关文章推荐
Python 返回汉字的汉语拼音
Feb 27 Python
python写xml文件的操作实例
Oct 05 Python
Python中获取对象信息的方法
Apr 27 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
python flask解析json数据不完整的解决方法
May 26 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
python创建与遍历List二维列表的方法
Aug 16 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
Python实例之wxpython中Frame使用方法
Jun 09 #Python
wxpython学习笔记(推荐查看)
Jun 09 #Python
wxPython中文教程入门实例
Jun 09 #Python
python操作xml文件详细介绍
Jun 09 #Python
实例讲解python函数式编程
Jun 09 #Python
理解python多线程(python多线程简明教程)
Jun 09 #Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 #Python
You might like
用PHP实现验证码功能
2006/10/09 PHP
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
介绍php设计模式中的工厂模式
2008/06/12 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
php 过滤器实现代码
2010/08/09 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
vue兄弟组件传递数据的实例
2018/09/06 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
Python requests发送post请求的一些疑点
2018/05/20 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
电子专业毕业生自荐信
2014/05/25 职场文书
庆六一活动总结
2014/08/29 职场文书
校本研修个人总结
2015/02/28 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
永不妥协观后感
2015/06/10 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js