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异常处理慎用“except:pass”建议
Apr 02 Python
Python的gevent框架的入门教程
Apr 29 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
linux环境中没有网络怎么下载python
Jul 07 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
python如何运行js语句
Sep 09 Python
浅析Python模块之间的相互引用问题
Feb 26 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 smarty函数扩展
2010/03/15 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
Array对象方法参考
2006/10/03 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
python妙用之编码的转换详解
2017/04/21 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python实现浪漫的烟花秀
2019/01/30 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
带薪年假请假条
2014/02/04 职场文书
班组长竞聘书
2014/03/31 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
出售房屋委托书范本
2014/09/24 职场文书
维稳承诺书
2015/01/20 职场文书
大学生活感想
2015/08/10 职场文书
汽车销售员工作总结
2015/08/12 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书