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 open读写文件实现脚本
Sep 06 Python
python类参数self使用示例
Feb 17 Python
Python采用Django开发自己的博客系统
Sep 29 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
python实现最长公共子序列
May 22 Python
Python多进程fork()函数详解
Feb 22 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
Python shelve模块实现解析
Aug 28 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python的pip有什么用
Jun 17 Python
浅谈Python基础之列表那些事儿
May 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
基于php缓存的详解
2013/05/15 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
vue-cli配置flexible过程详解
2019/07/04 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python sleep和wait对比总结
2021/02/03 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
护理专业应届毕业生推荐信
2013/11/15 职场文书
审计工作个人的自我评价
2013/12/25 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
上课睡觉检讨书
2014/01/28 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫