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以并发方式编写高性能端口扫描器的方法
Jun 14 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
python 定义给定初值或长度的list方法
Jun 23 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
python实现的config文件读写功能示例
Sep 24 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
OpenCV-Python实现人脸美白算法的实例
Jun 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简介
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
python绘图方法实例入门
2015/05/19 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python可视化实现KNN算法
2019/10/16 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
如何基于Python按行合并两个txt
2020/11/03 Python
如何编写python的daemon程序
2021/01/07 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
西班牙在线光学:Visual-Click
2020/06/22 全球购物
校园餐饮创业计划书
2014/01/10 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技