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模拟登陆Tom邮箱示例分享
Jan 13 Python
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
利用ctypes提高Python的执行速度
Sep 09 Python
神经网络理论基础及Python实现详解
Dec 15 Python
Python3爬虫全国地址信息
Jan 05 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
python全局变量引用与修改过程解析
Jan 07 Python
Python爬虫与反爬虫大战
Jul 30 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python模块导入的细节详解
2018/12/10 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
学习python分支结构
2019/05/17 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python判断变量是否为列表的方法
2020/09/17 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
酒店管理求职信
2014/06/09 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
个人专业技术总结
2015/03/05 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
办公经费申请报告
2015/05/15 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android