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 19 Python
python实现在sqlite动态创建表的方法
May 08 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python制作词云的方法
Jan 03 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python selenium的这三种等待方式一定要会!
Jun 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
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php生成HTML文件的类方法
2019/10/11 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
Python随机生成数模块random使用实例
2015/04/13 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Django的CVB实例详解
2020/02/10 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
python如何使用代码运行助手
2020/07/03 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
英语专业推荐信
2013/11/16 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
竞聘上岗演讲
2014/05/19 职场文书
计算机专业求职信
2014/06/02 职场文书
司法局火灾防控方案
2014/06/05 职场文书
2015年公务员工作总结
2015/04/24 职场文书
倡议书怎么写?
2019/04/11 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python