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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
使用cx_freeze把python打包exe示例
Jan 24 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Python3.5 创建文件的简单实例
Apr 26 Python
python实现身份证实名认证的方法实例
Nov 08 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
用python实现监控视频人数统计
May 21 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
Python全局变量用法实例分析
2016/07/19 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
对python模块中多个类的用法详解
2019/01/10 Python
python3实现点餐系统
2019/01/24 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
农民工讨薪标语
2014/06/26 职场文书
低碳环保演讲稿
2014/08/28 职场文书
代收款委托书范本
2014/10/01 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
如何用python插入独创性声明
2021/03/31 Python
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang