wxpython 最小化到托盘与欢迎图片的实现方法

一直在学习系统托盘的实现,于是自己写了一个简单的系统托盘实例,右键包括演示、最大化、最小化、退出和关于。在python2.6下测试通过。

注意,本节分享的python实例代码,这里是托盘上的图标弹出菜单是覆盖了CreatePopupMenu。

也可以绑定2个方法,一个wx.EVT_TASKBAR_RIGHT_DOWN,方法里面生成menu,然后再来一个wx.EVT_MENU,定义要处理的事件函数。

还有一个就是Wx窗体上的最小化按钮,触发的事件是 wx.EVT_ICONIZE,而根本就没有定义什么wx.EVT_MINIMIZE,但是最大化,有个wx.EVT_MAXIMIZE。

代码如下:

#!/usr/bin/python 
# _*_ coding: utf-8 _*_

import wx 
class TaskBarIcon(wx.TaskBarIcon): 
    ID_Hello = wx.NewId() 
    def __init__(self, frame): 
        wx.TaskBarIcon.__init__(self) 
        self.frame = frame 
        self.SetIcon(wx.Icon(name='wx.ico', type=wx.BITMAP_TYPE_ICO), 'TaskBarIcon!') 
        self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarLeftDClick) 
        self.Bind(wx.EVT_MENU, self.OnHello, id=self.ID_Hello)

def OnTaskBarLeftDClick(self, event): 
        if self.frame.IsIconized(): 
           self.frame.Iconize(False) 
        if not self.frame.IsShown(): 
           self.frame.Show(True) 
        self.frame.Raise()

def OnHello(self, event): 
        wx.MessageBox('Hello From TaskBarIcon!', 'Prompt')

# override 
    def CreatePopupMenu(self): 
        menu = wx.Menu() 
        menu.Append(self.ID_Hello, 'Hello') 
        return menu

class Frame(wx.Frame): 
    def __init__( 
            self, parent=None, id=wx.ID_ANY, title='TaskBarIcon', pos=wx.DefaultPosition, 
            size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE 
            ): 
        wx.Frame.__init__(self, parent, id, title, pos, size, style)

# create a welcome screen 
        screen = wx.Image(self.screenIm).ConvertToBitmap() 
        wx.SplashScreen(screen, wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,1000, None, -1) 
        wx.Yield()

self.SetIcon(wx.Icon('wx.ico', wx.BITMAP_TYPE_ICO)) 
        panel = wx.Panel(self, wx.ID_ANY) 
        button = wx.Button(panel, wx.ID_ANY, 'Hide Frame', pos=(60, 60))

sizer = wx.BoxSizer() 
        sizer.Add(button, 0) 
        panel.SetSizer(sizer) 
        self.taskBarIcon = TaskBarIcon(self)

# bind event 
        self.Bind(wx.EVT_BUTTON, self.OnHide, button) 
        self.Bind(wx.EVT_CLOSE, self.OnClose) 
        self.Bind(wx.EVT_ICONIZE, self.OnIconfiy) # 最小化事件绑定 
    def OnHide(self, event): 
        self.Hide() 
    def OnIconfiy(self, event): 
        wx.MessageBox('Frame has been iconized!', 'Prompt') 
        event.Skip() 
    def OnClose(self, event): 
        self.taskBarIcon.Destroy() 
        self.Destroy()

def TestFrame(): 
    app = wx.PySimpleApp() 
    frame = Frame(size=(640, 480)) 
    frame.Centre() 
    frame.Show() 
    app.MainLoop() 
if __name__ == '__main__': 
    TestFrame()

(0)

相关推荐

  • windows下wxPython开发环境安装与配置方法

    安装文件准备: 安装文件 下载地址 python-2.6.2.msi http://www.python.org/download/ wxPython2.8-win32-unicode-2.8.10.1-py26.exe wxPython2.8-win32-docs-demos-2.8.10.1.exe http://www.wxpython.org/download.php py2exe-0.6.9.win32-py2.6.exe http://sourceforge.net/projects

  • wxPython中文教程入门实例

    wxPython中文教程入门实例 wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.可以在所有的子类中使用 wx.Window 的方法. wxPython的几种方法:* SetTitle( string title ) -- 设置窗口标题.只可用于框架和对话框. * SetToolTip( wx.ToolTip tip ) -- 为窗口添加提示. * SetSize( wx.Size size ) -- 设置窗口的尺寸. * SetPosition( wx.Poin

  • wxPython事件驱动实例详解

    本文实例讲述了wxPython的事件驱动机制,分享给大家供大家参考.具体方法如下: 先来看看如下代码: #!/usr/bin/python # moveevent.py import wx #导入wx库 class MoveEvent(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(250, 180)) #窗口大小为(250, 180) wx.St

  • python去除文件中空格、Tab及回车的方法

    本文实例讲述了python去除文件中空格.Tab及回车的方法.分享给大家供大家参考,具体如下: 在最近的开发工作中,为了应付比赛赶进度,服务端的json文件都是人工写的,写完之后发现格式都是十分规整,易于人阅读的json,但是客户端请求不需要那些为了格式而在json里面添加的空格.tab.回车等等没用的字符,遂用python写一脚本,去除文件中的空格.回车.换行. 原json文件: { "amount" : "2", "content" : [

  • wxPython 入门教程

    这篇文章是关于 wxPython,但 wxPython 实际是两件事物的组合体:Python 脚本语言和 GUI 功能的 wxWindows 库(关于 wxWindows 的介绍,请参阅 developerWorks上的 "细述 wxWindows" ).wxWindows 库是为了最大可移植性的 C/C++ 库,而抽取 GUI 功能.所以 wxWindows 应用程序与生俱来地可以运行在 Windows.带 X.KDE 或 Gnome 的 UNIX 或者 wxWindows 已移植到

  • wxPython定时器wx.Timer简单应用实例

    本文实例讲述了wxPython定时器wx.Timer简单应用.分享给大家供大家参考.具体如下: # -*- coding: utf-8 -*- ######################################################## ## 这是wxPython定时器wx.Timer的简单应用 ## testwxTimer1.pyw ######################################################## import wx impo

  • 使用wxpython实现的一个简单图片浏览器实例

    上次我爬了n多图片,但是浏览的时候有一个问题. 图片浏览器的浏览一般都是按名称排的,而我对图片的命名是按照数字递增的.比如3总是会排在10后面,也就无法快速地浏览图片了. 所以,出于方便自己查阅图片,也出于学习,决定做一个自己的图片浏览器. 目标:浏览目录,通过滚轮不断显示同一个文件夹下的图片,并自定义排序. 步骤0:要实现图形界面,我使用wxPython. 至于如何安装和简单地使用wxpython,可以到网上检索,一大堆资料. 以下步骤默认你已经知道如何生成一个自己的frame. 步骤1:浏览

  • python之wxPython菜单使用详解

    本文实例讲述了python中wxPython菜单的使用方法,分享给大家供大家参考.具体如下: 先来看看下面这段代码: import wx APP_EXIT=1 #定义一个控件ID class Example(wx.Frame): def __init__(self, parent, id, title): super(Example,self).__init__(parent, id, title) #调用你类的初始化 self.InitUI() #调用自身的函数 def InitUI(self

  • wxPython窗口中文乱码解决方法

    本文实例讲述了wxPython窗口中文乱码解决方法,分享给大家供大家参考.具体方法如下: 文件保存为 utf-8 文件开头添加 # -*- coding: utf-8 -*- 在有中文字符串前加u或U,例如:u"我的网站:http://www.jb51.net" 示例如下: 复制代码 代码如下: # -*- coding: utf-8 -*- import wx class App(wx.App):       def OnInit(self):         frame = wx.

  • wxpython中Textctrl回车事件无效的解决方法

    本文实例讲述了wxpython中Textctrl回车事件无效的解决方法.分享给大家供大家参考,具体如下: 今天使用wxptyhon的Textctrl控件开发客户端时遇到了一个问题, 按照HTML表单的逻辑, 我们在Textctrl里回车应该提交查询, 但是wxpython的Textctrl很奇怪, 回车了居然是像Tab作用一样跳转到下一个控件.这样的话,要完成查询, 要么是鼠标点击按钮, 要么需要按两次或者两次以上. Google了一下, 无答案, 但是得到了一些有用的资料: TextCtrl支

  • 将图片文件嵌入到wxpython代码中的实现方法

    下面直接上代码留存,方便以后查阅复用. # -*- coding: utf-8 -*- #作者:LeniyTsan #时间:2014-07-17 import wx from wx.lib.embeddedimage import PyEmbeddedImage class MyFrame1 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent ) self.SetBackgroundColour

  • Python实现把回车符\r\n转换成\n

    最近在做cocos2d-x的简明配置,发现有的朋友的文本编辑器,自动将\r\n截断成\n,(在unix上换行使用\n,windows上,换行使用的是\r\n)于是,写了这个脚本,希望对一些朋友有所帮助,不用一行一行去改 import os def replace(filePath, w2u): try: oldfile = open(filePath, "rb+") #这里必须用b打开 path, name = os.path.split(filePath) newfile = ope

随机推荐