python中wx将图标显示在右下角的脚本代码


Posted in Python onMarch 08, 2013
import wx 
import images
class DemoTaskBarIcon(wx.TaskBarIcon):
    TBMENU_RESTORE = wx.NewId()
    TBMENU_CLOSE   = wx.NewId()
    TBMENU_CHANGE  = wx.NewId()
    TBMENU_REMOVE  = wx.NewId()    def __init__(self, frame):
        wx.TaskBarIcon.__init__(self)
        self.frame = frame

        # Set the image
        icon = self.MakeIcon(images.getWXPdemoImage())
        self.SetIcon(icon, "wxPython Demo")
        self.imgidx = 1
        # bind some events
        self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarActivate)
        self.Bind(wx.EVT_MENU, self.OnTaskBarActivate, id=self.TBMENU_RESTORE)
        self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=self.TBMENU_CLOSE)
        self.Bind(wx.EVT_MENU, self.OnTaskBarChange, id=self.TBMENU_CHANGE)
        self.Bind(wx.EVT_MENU, self.OnTaskBarRemove, id=self.TBMENU_REMOVE)

    def CreatePopupMenu(self):
        """
        This method is called by the base class when it needs to popup
        the menu for the default EVT_RIGHT_DOWN event.  Just create
        the menu how you want it and return it from this function,
        the base class takes care of the rest.
        """
        menu = wx.Menu()
        menu.Append(self.TBMENU_RESTORE, "Restore wxPython Demo")
        menu.Append(self.TBMENU_CLOSE,   "Close wxPython Demo")
        menu.AppendSeparator()
        menu.Append(self.TBMENU_CHANGE, "Change the TB Icon")
        menu.Append(self.TBMENU_REMOVE, "Remove the TB Icon")
        return menu

    def MakeIcon(self, img):
        """
        The various platforms have different requirements for the
        icon size...
        """
        if "wxMSW" in wx.PlatformInfo:
            img = img.Scale(16, 16)
        elif "wxGTK" in wx.PlatformInfo:
            img = img.Scale(22, 22)
        # wxMac can be any size upto 128x128, so leave the source img alone....
        icon = wx.IconFromBitmap(img.ConvertToBitmap() )
        return icon
    
    def OnTaskBarActivate(self, evt):
        if self.frame.IsIconized():
            self.frame.Iconize(False)
        if not self.frame.IsShown():
            self.frame.Show(True)
        self.frame.Raise()

    def OnTaskBarClose(self, evt):
        self.frame.Close()

    def OnTaskBarChange(self, evt):
        names = [ "WXPdemo", "Mondrian", "Pencil", "Carrot" ]                  
        name = names[self.imgidx]
        getFunc = getattr(images, "get%sImage" % name)
        self.imgidx += 1
        if self.imgidx >= len(names):
            self.imgidx = 0
        icon = self.MakeIcon(getFunc())
        self.SetIcon(icon, "This is a new icon: " + name)

    def OnTaskBarRemove(self, evt):
        self.RemoveIcon()

class MyFrame(wx.Frame): 
    def __init__(self): 
        wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300)) 
        panel = wx.Panel(self, -1) 
        panel.Bind(wx.EVT_MOTION,  self.OnMove) 
        wx.StaticText(panel, -1, "Pos:", pos=(10, 12)) 
        self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10)) 
     try:
            self.tbicon = DemoTaskBarIcon(self)
        except:
            self.tbicon = None
        #wx.CallAfter(self.ShowTip)
        #self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
        #self.Bind(wx.EVT_ICONIZE, self.OnIconfiy)
    def OnCloseWindow(self, event):
        self.dying = True
        self.demoPage = None
        self.codePage = None
        self.mainmenu = None
        if self.tbicon is not None:
            self.tbicon.Destroy()
        self.Destroy()
    def OnIconfiy(self, evt):
        wx.LogMessage("OnIconfiy: %s" % evt.Iconized())
        evt.Skip()
    def OnMove(self, event): 
        pos = event.GetPosition() 
        self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y)) 
if __name__ == '__main__': 
    app = wx.PySimpleApp() 
    frame = MyFrame() 
    frame.Show(True) 
    app.MainLoop()
Python 相关文章推荐
Python 元类使用说明
Dec 18 Python
python使用分治法实现求解最大值的方法
May 12 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
Python项目跨域问题解决方案
Jun 22 Python
解决python对齐错误的方法
Jul 16 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
python实现简单的聊天小程序
Jul 07 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 Python
python中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 #Python
python中关于日期时间处理的问答集锦
Mar 08 #Python
python局部赋值的规则
Mar 07 #Python
Python 用户登录验证的小例子
Mar 06 #Python
Eclipse + Python 的安装与配置流程
Mar 05 #Python
python将html转成PDF的实现代码(包含中文)
Mar 04 #Python
python发送邮件的实例代码(支持html、图片、附件)
Mar 04 #Python
You might like
php获取用户浏览器版本的方法
2015/01/03 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
php显示时间常用方法小结
2015/06/05 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
javascript 写类方式之二
2009/07/05 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
javascript截取字符串小结
2015/04/28 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
Python标准库之Sys模块使用详解
2015/05/23 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python退火算法在高次方程的应用
2018/07/26 Python
基于python实现学生管理系统
2018/10/17 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
文员岗位职责
2013/11/09 职场文书
部队万能检讨书
2014/02/20 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
营运督导岗位职责
2015/04/10 职场文书
六年级语文教学反思
2016/03/03 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
Python实现为PDF去除水印的示例代码
2022/04/03 Python