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简单文本处理的方法
Jul 10 Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
Python文件处理
Feb 29 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
python加载自定义词典实例
Dec 06 Python
python ETL工具 pyetl
Jun 07 Python
python 模拟登录B站的示例代码
Dec 15 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
python套接字socket通信
Apr 01 Python
python前后端自定义分页器
Apr 13 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
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
PHP多进程编程实例详解
2017/07/19 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
python实现人人网登录示例分享
2014/01/19 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
2014年教研员工作总结
2014/12/23 职场文书
付款证明模板
2015/06/19 职场文书
python 远程执行命令的详细代码
2022/02/15 Python
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python