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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python实现的归并排序算法示例
Nov 21 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 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 正则 过滤html 的超链接
2009/06/02 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
python实现计算器简易版
2020/12/17 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
总经理助理的八要求
2013/11/12 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
奠基仪式策划方案
2014/05/15 职场文书
奥运会口号
2014/06/13 职场文书
党在我心中演讲稿
2014/09/02 职场文书
老公保证书
2015/01/17 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫