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下的XSLT API进行web开发的简单教程
Apr 15 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python五子棋游戏的设计与实现
Jun 18 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
Python Django路径配置实现过程解析
Nov 05 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
PHP5 面向对象程序设计
2008/02/13 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
js保留两位小数使用toFixed实现
2013/07/29 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
移动端web滚动分页的实现方法
2017/05/05 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
安装Python的教程-Windows
2017/07/22 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
服装促销活动方案
2014/02/23 职场文书
开学典礼决心书
2014/03/11 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js