Copy CodeThe code is as follows:
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 if it needs to popup
the menu For the default Evt_right_down event. Just Create
The menu how to 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 has 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= ())
Panel = wx. Panel (self,-1)
Panel. Bind (WX. Evt_motion, self. OnMove)
WX. Statictext (Panel,-1, "Pos:", pos= (Ten))
Self.posctrl = wx. Textctrl (Panel,-1, "", pos= (+))
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 ()