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简单实现Base64编码和解码的方法
Apr 29 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
解决python Markdown模块乱码的问题
Feb 14 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
python同步windows和linux文件
Aug 29 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
pytorch 实现变分自动编码器的操作
May 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 5.3.0 安装分析心得
2009/08/07 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
深入apache host的配置详解
2013/06/09 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP fclose函数用法总结
2019/02/15 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
python selenium登录豆瓣网过程解析
2019/08/10 Python
在django模板中实现超链接配置
2019/08/21 Python
详解python中eval函数的作用
2019/10/22 Python
python生成特定分布数的实例
2019/12/05 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python PIL库图片灰化处理
2020/04/07 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
电子商务专业个人的自我评价
2013/12/19 职场文书
授权委托书公证
2014/09/14 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
JavaScript 反射学习技巧
2021/10/16 Javascript