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复制文件代码实现
Dec 23 Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
python实现统计代码行数的方法
May 22 Python
requests和lxml实现爬虫的方法
Jun 11 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
Python3爬虫中Ajax的用法
Jul 10 Python
python 图像增强算法实现详解
Jan 24 Python
Django中template for如何使用方法
Jan 31 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
德劲1103二次变频版的打磨
2021/03/02 无线电
用cookies来跟踪识别用户
2006/10/09 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python中的json总结
2018/10/11 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
python 如何实现遗传算法
2020/09/22 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
优秀大学生求职自荐信范文
2014/04/19 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
购房意向书
2014/08/30 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
Python实现byte转integer
2021/06/03 Python