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中表示字符串的三种方法
Sep 06 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
python字典快速保存于读取的方法
Mar 23 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
python实现桌面托盘气泡提示
Jul 29 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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写的采集程序
2007/03/16 PHP
php类常量的使用详解
2013/06/08 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
thinkPHP查询方式小结
2016/01/09 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
vuex提交state&&实时监听state数据的改变方法
2018/09/16 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
土木工程毕业生推荐信
2013/10/28 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2015选调生工作总结
2015/07/24 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA