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 调用win32pai 操作cmd的方法
May 28 Python
Python实现的建造者模式示例
Aug 06 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
表单内同名元素的控制
2006/11/22 Javascript
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
js中开关变量使用实例
2017/02/24 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
遗传算法之Python实现代码
2017/10/10 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python对wav文件的重采样实例
2020/02/25 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
小班开学寄语
2014/04/04 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
电力安全事故反思
2014/04/27 职场文书
团队拓展活动方案
2014/08/28 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书