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学习笔记之常用函数及说明
May 23 Python
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
教你用Python写安卓游戏外挂
Jan 11 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
django将数组传递给前台模板的方法
Aug 06 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
简单了解Python write writelines区别
Feb 27 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
Django实现后台上传并显示图片功能
May 29 Python
python GUI模拟实现计算器
Jun 22 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
python中validators库的使用方法详解
Sep 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
PHP仿微信发红包领红包效果
2016/10/30 PHP
php compact 通过变量创建数组
2016/11/15 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
css配合jquery美化 select
2013/11/29 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
domReady的实现案例
2016/11/23 Javascript
js闭包用法实例详解
2016/12/13 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
Java和Javasciprt的区别
2012/09/02 面试题
恒华伟业笔试面试题
2015/02/26 面试题
感恩寄语大全
2014/04/11 职场文书
年度评优评先方案
2014/06/03 职场文书
语文教育专业求职信
2014/06/28 职场文书
办护照工作证明
2014/10/01 职场文书
小学班级口号大全
2015/12/25 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
HTML基础详解(上)
2021/10/16 HTML / CSS