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实现简单QQ单用户机器人的方法
Jul 03 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
深入理解python中的闭包和装饰器
Jun 12 Python
解决python3 json数据包含中文的读写问题
May 10 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
浅析python参数的知识点
Dec 10 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
Django调用百度AI接口实现人脸注册登录代码实例
Apr 23 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程序
2006/10/09 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Python 绘制可视化折线图
2020/07/22 Python
python中time.ctime()实例用法
2021/02/03 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
小学生寒假家长评语
2014/04/16 职场文书
本科毕业生自荐信
2014/05/26 职场文书
个人委托书如何写
2014/09/25 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
增值税发票丢失证明
2015/06/19 职场文书
升学宴祝酒词
2015/08/11 职场文书
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL