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 相关文章推荐
pyqt4教程之messagebox使用示例分享
Mar 07 Python
详解Python之unittest单元测试代码
Jan 24 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
Django  ORM 练习题及答案
Jul 19 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 Python
python使用shell脚本创建kafka连接器
Apr 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
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
python动态加载变量示例分享
2014/02/17 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
2015年财务部工作总结
2015/04/10 职场文书
工作会议通知
2015/04/15 职场文书
医者仁心观后感
2015/06/17 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android
Redis 异步机制
2022/05/15 Redis