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通过apply使用元祖和列表调用函数实例
May 26 Python
Python中字典映射类型的学习教程
Aug 20 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
使用python实现对元素的长截图功能
Nov 14 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
Python日志logging模块功能与用法详解
Apr 09 Python
python实现感知机模型的示例
Sep 30 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文件大小格式化函数合集
2014/03/10 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php实现微信发红包
2015/12/05 PHP
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python中查看文件名和文件路径
2017/03/31 Python
python实现简单神经网络算法
2018/03/10 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python之语音识别speech模块
2020/09/09 Python
在Python中实现字典反转案例
2020/12/05 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
个人教师自我评价范文
2013/12/02 职场文书
银行领导证婚词
2014/01/11 职场文书
运动会广播稿30字
2014/01/21 职场文书
2019财务转正述职报告
2019/06/27 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技