Lacro59 | Bonjour,
J'ai crée un pop-up menu que l'on active en cliquant sur une TaskBarIcon.
Code :
- import wx
- import sys
- class TaskBarIcon(wx.TaskBarIcon):
- popupRUN = wx.NewId()
-
- popupABOUT = wx.NewId()
- popupEXIT = wx.NewId()
- popupSUBMENU = wx.NewId()
-
-
- def __init__(self, frame, IcoPath, InfoBulle):
- wx.TaskBarIcon.__init__(self)
- icon = wx.Icon(IcoPath, wx.BITMAP_TYPE_ICO, 16, 16)
- self.SetIcon(icon, InfoBulle)
-
- self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.evt_left_down)
- self.Bind(wx.EVT_MENU, self.Evt_Run, id=self.popupRUN)
-
- self.Bind(wx.EVT_MENU, self.Evt_About, id=self.popupABOUT)
- self.Bind(wx.EVT_MENU, self.Evt_Exit, id=self.popupEXIT)
-
- self.Bind(wx.EVT_MENU, self.Evt_SubMenu, id=self.popupSUBMENU)
- self.menu1 = wx.Menu()
- def Evt_Run(self, event):
- print "Evt_Run"
- def Evt_About(self, event):
- print "Evt_About"
- def Evt_SubMenu(self, event):
- print "Evt_SubMenu"
- def Evt_Exit(self, event):
- print "Evt_Exit"
- sys.exit()
- def CreateItem(self, menu, caption, icon, popupID):
- if popupID == "Run":
- item = wx.MenuItem(menu, self.popupRUN, caption)
- item.SetBackgroundColour(wx.GREEN)
-
- if popupID == "Link":
- item = wx.MenuItem(menu, self.popupLINK, caption)
-
- if popupID == "View":
- item = wx.MenuItem(menu, self.popupVIEW, caption)
-
- if popupID == "Config":
- item = wx.MenuItem(menu, self.popupCONFIG, caption)
-
- if popupID == "Exit":
- item = wx.MenuItem(menu, self.popupEXIT, caption)
-
- if popupID == "About":
- item = wx.MenuItem(menu, self.popupABOUT, caption)
-
- if icon <> "":
- ico = wx.Icon(icon, wx.BITMAP_TYPE_ICO, 16, 16)
- bmp = wx.BitmapFromIcon(ico)
- item.SetBitmap(bmp)
- menu.AppendItem(item)
- return menu
- def CreateSubMenu(self, menu, sm, caption):
- menu.AppendMenu(self.popupSUBMENU, caption, sm)
-
- return menu
- def SetListMenu(self, menu):
- self.menu1 = menu
- def evt_left_down(self, event):
- print "evt_left_down"
- self.PopupMenu(self.menu1)
- def SubMenu(T, menu, caption):
- Sx2 = wx.Menu()
- Sx2 = T.CreateItem(Sx2, "Link", "", "Link" )
- Sx2 = T.CreateItem(Sx2, "Link", "", "Link" )
- menu = T.CreateSubMenu(menu, Sx2, caption)
- Sx2 = None
- return menu
- #######################################################################
- TrayIco = "TrayMenu.ico"
- app = wx.PySimpleApp()
- T = TaskBarIcon(None, TrayIco, "TrayMenu)" )
- Mx = wx.Menu()
- Mx = T.CreateItem(Mx, "Run", "", "Run" )
- Mx.AppendSeparator()
- Sx = wx.Menu()
- Sx = T.CreateItem(Sx, "Run", "", "Run" )
- Sx = SubMenu(T, Sx, "SubMenu1-1" )
- Sx = T.CreateItem(Sx, "Run", "", "Run" )
- Sx = SubMenu(T, Sx, "SubMenu1-2" )
- Mx = T.CreateSubMenu(Mx, Sx, "SubMenu1" )
- Sx = None
- Mx.AppendSeparator()
- Sx = wx.Menu()
- Sx = T.CreateItem(Sx, "About", "", "About" )
- Mx = T.CreateSubMenu(Mx, Sx, "SubMenu2" )
- Sx = None
- Mx.AppendSeparator()
- Mx = T.CreateItem(Mx, "Exit", TrayIco, "Exit" )
- T.SetListMenu(Mx)
- app.MainLoop()
|
Jusque là rien de bien exceptionnel.
En regardant un peu les différentes documentations traitant sur le sujet, je me demandais si :
- il était possible d'afficher une icone pour un sous-menu comme avec un item d'un menu ?
- d'afficher une image autour du pop-up menu ?
- de personnaliser le background par une couleur et mieux par une image ?
- de même que de définir une image de fond pour un item ?
Ca doit bien faire une semaine que je me creuse la tête sur ces points, lol.
Merci. |