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中类的定义、继承及使用对象实例详解
Apr 30 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
pandas 层次化索引的实现方法
Jul 06 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
Python谱减法语音降噪实例
Dec 18 Python
Python实现图片识别加翻译功能
Dec 26 Python
Python tornado上传文件的功能
Mar 26 Python
python中的垃圾回收(GC)机制
Sep 21 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
详解python的变量缓存机制
Jan 24 Python
如何用python绘制雷达图
Apr 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入库和出库
2013/06/25 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
jquery动态添加删除div 具体实现
2013/07/20 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
Python ljust rjust center输出
2008/09/06 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
解析Python中的二进制位运算符
2015/05/13 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
Python对象属性自动更新操作示例
2018/06/15 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
晚宴邀请函范文
2014/01/15 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle