?

Log in

No account? Create an account

Previous Entry | Next Entry

Python 学习4 窗口的taskbar Iconize

[ENV: Python 2.7, wxPython 2.8]

在wxpython中负责实现Taskbar的Iconize的类是TaskBarIcon。 最方便的方法是继承这个类,并重载里面的CreatePopupMenu方法。

下面是我实现的一个例子:

import wx

class QmTaskbarIcon(wx.TaskBarIcon):
    """this is the main frame window"""
    
    def __init__(self):
        #setup a taskbar icon
        wx.TaskBarIcon.__init__(self)
        
        self.SetIcon(wx.Icon("icons\qm.png",wx.BITMAP_TYPE_PNG))

        #self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnClick, self)
        self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnShowMe)
                

    def OnShowMe(self, event):
        
        if wx.GetApp().GetTopWindow().IsIconized():
            #wx.GetApp().GetTopWindow().Show(True)
            wx.GetApp().GetTopWindow().Raise()
            wx.GetApp().GetTopWindow().Iconize(False)
            #wx.PostEvent(wx.GetApp(),wx.FocusEvent())
            #wx.PostEvent(wx.GetApp().GetTopWindow(),wx.ActivateEvent())
            
    def CreatePopupMenu(self):
        context_menu=wx.Menu()

        menuItem_show=wx.MenuItem(context_menu,wx.NewId(), "Show Me")
        menuItem_show.SetBitmap(wx.Bitmap('icons/show.png'))
        context_menu.AppendItem(menuItem_show)
        self.Bind(wx.EVT_MENU, self.OnShowMe,menuItem_show)

        menuItem_exit=wx.MenuItem(context_menu,wx.ID_EXIT, "Exit")
        menuItem_exit.SetBitmap(wx.Bitmap('icons/exit.png'))
        context_menu.AppendItem(menuItem_exit)
        self.Bind(wx.EVT_MENU, wx.GetApp().GetTopWindow().OnExit,menuItem_exit)

        return context_menu


注意里面的被注释掉的那个Bind语句,如果打开将报错:AttributeError: 'QmTaskbarIcon' object has no attribute 'GetId'

研究了一下,发现是由于TaskbarIcon不是继承自Window这个类,而是来自于EvtHandler,所以第三个参数不能写。

在主窗体中,写如下代码:
    def __init__(self, parent, title):

        #setup a taskbar icon
        self.tbicon = QmTaskbarIcon()
        
        self.Bind(wx.EVT_ICONIZE,self.onIconize,self)

    def onIconize(self, event):
        
        if event.Iconized():
            self.Show(False)

Tags:

Comments

Latest Month

September 2011
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
Powered by LiveJournal.com
Designed by Akiko Kurono