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调用新浪微博API项目实践
Jul 28 Python
Python中Continue语句的用法的举例详解
May 14 Python
pandas按若干个列的组合条件筛选数据的方法
Apr 11 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
python3连接MySQL数据库实例详解
May 24 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
解析Python3中的Import
Oct 13 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
基于python 取余问题(%)详解
Jun 03 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python实现简单的猜单词
Jun 15 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中inlcude()性能对比详解
2012/09/16 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
php依赖注入知识点详解
2019/09/23 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
js模块加载方式浅析
2017/08/12 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python 时间处理datetime实例
2008/09/06 Python
python文件和目录操作方法大全(含实例)
2014/03/12 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python使用正则筛选信用卡
2019/01/27 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
Django通过json格式收集主机信息
2020/05/29 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
学生操行评语大全
2014/04/24 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
五年级语文教学反思
2016/03/03 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript