
import wx
from wx.lib.embeddedimage import PyEmbeddedImage

#------------------------------------------------------------------------------

norm = PyEmbeddedImage( 
    "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACw0lEQVR42o2TS0wTYRSFzzzL"
    "TB9SoEoLpYg8Cg2SKJiiISIC6kZc48atxmdMdOVOE13ogsRE4wZRF7rABIkxaDAEjAYFFUWC"
    "1vCGSoG29DHTzrTjj6ZEEkQnuZnk5t4vZ849Q2HjJyOvaPO5Kc/8FU2DvN4AtcGy6HLbHxRt"
    "zz0yMjDWMjrgPUt62n8BGI62VtRsvZ9fbKlLJDVwOhof+yZbPR9mThMloQ0BDEPbqxq2tReU"
    "Z1eGA3EkEyo4gQXPs/g6OP38fc9EExmT/gbgS3c4usrctr06E4VkjEYoIMG8RUBC1ZBQgMGX"
    "3296hrwn1wVkWU0Xa5pKrzJEsk5HgSVv/1wMRrMOvMggGlUgBxWt+9HnRgJ+sQZAUVS2+1Dx"
    "oMOZaeX4lU9hiGMa/F4ZGbkC8YVCOKiAJf2hnqlXn15P7CNryirAbDFeqD/quiZuYkATp0S9"
    "nixLkKIxZDoE8GksosSTSEBB0Kegt2P4sBSJPUkBWNcue29Frd1Nsxp0IgtzlgHzEyGEgnFY"
    "CwzgiKxln4RoSCKyOfQ8Hrk8N7l0KQXIqz5Y8q6o0mKhWUAQ0n6dPBKUSakwWXRgWQYxWQFN"
    "a1BjQPfD0ZbZ8YUzKYCtqr5wwFVtzaZ5DSaziLisYnEmimQcMFg4CEYeDKHLsgxF0tB1b/jG"
    "7Nji+RSAKamwde1uKqyjmCR0ehYrSsJLKtQIBYYIMmRwMJhEyNE4QotxdNwePLb4Y/nuqomC"
    "nj/Q0Fz21OHKoCmGZCChYXkhRhSQk4oUBNNvAM0Aw33eQGfrQEUikZxck4N0i3h8f7PzeunO"
    "HGEFMvHFDymkkBCpyHWmw2jSwzceV9tvvTmx4PXfWTfKHMfWFpbnnCL5d6vxpM3d6ERnW/8U"
    "L2DUYDT4pr/528Lh8LN//Y1WUvkEtsfqyLRNeubfkqv0k940qdifgz8BGVYSIJk7TsUAAAAA"
    "SUVORK5CYII=" )

#------------------------------------------------------------------------------

class MainWindow( wx.Frame ) :
    
    def __init__( self, *args, **kwargs ) :
        
        wx.Frame.__init__( self, *args, **kwargs )
        self.BackgroundColour = (220, 240, 240)
        
        #----
        
        #icon_graphic = norm.GetIcon()
        self.tbIcon = wx.TaskBarIcon()
        #self.tbIcon.SetIcon( icon_graphic, "I am an Icon" )
        self.tbIcon.SetIcon( norm.GetIcon(), "I am an Icon" )

        # add taskbar icon event.
        # The 2 following statements seem to do the same thing.
        wx.EVT_TASKBAR_RIGHT_UP( self.tbIcon, self.OnClose )
        #self.tbIcon.Bind( wx.EVT_TASKBAR_RIGHT_UP, self.OnClose )
        
        # Make sure all other app close events remove the tbIcon
        # See what happen when you comment out the next statement.
        self.Bind( wx.EVT_CLOSE, self.OnClose )
        
    #end __init__

    #---------------------------------
    
    def OnClose( self, event ) :
        """ All close events must destroy the icon. """
        
        self.tbIcon.Destroy()   # remove icon from the "System Tray" (this is NOT the Taskbar)
        wx.Exit()               # close the entire app.
        
    #end def
    

#==============================================================================

app = wx.App( redirect=False )
win = MainWindow( None ).Show()
app.MainLoop()