[wxPython] Pop-up menu

Pop-up menu [wxPython] - Python - Programmation

Marsh Posté le 16-10-2007 à 15:14:25    

Bonjour,
 
J'ai crée un pop-up menu que l'on active en cliquant sur une TaskBarIcon.
 

Code :
  1. import wx
  2. import sys
  3. class TaskBarIcon(wx.TaskBarIcon):
  4.     popupRUN = wx.NewId()
  5.    
  6.     popupABOUT = wx.NewId() 
  7.     popupEXIT = wx.NewId()
  8.     popupSUBMENU = wx.NewId()
  9.    
  10.    
  11.     def __init__(self, frame, IcoPath, InfoBulle):
  12.         wx.TaskBarIcon.__init__(self)
  13.         icon = wx.Icon(IcoPath, wx.BITMAP_TYPE_ICO, 16, 16)
  14.         self.SetIcon(icon, InfoBulle)
  15.        
  16.         self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.evt_left_down)
  17.         self.Bind(wx.EVT_MENU, self.Evt_Run, id=self.popupRUN)
  18.        
  19.         self.Bind(wx.EVT_MENU, self.Evt_About, id=self.popupABOUT)
  20.         self.Bind(wx.EVT_MENU, self.Evt_Exit, id=self.popupEXIT)
  21.        
  22.         self.Bind(wx.EVT_MENU, self.Evt_SubMenu, id=self.popupSUBMENU)
  23.         self.menu1 = wx.Menu()
  24.     def Evt_Run(self, event):
  25.         print "Evt_Run"
  26.     def Evt_About(self, event):
  27.         print "Evt_About"
  28.     def Evt_SubMenu(self, event):
  29.         print "Evt_SubMenu"
  30.     def Evt_Exit(self, event):
  31.         print "Evt_Exit"
  32.         sys.exit()
  33.     def CreateItem(self, menu, caption, icon, popupID):
  34.         if popupID == "Run":
  35.             item = wx.MenuItem(menu, self.popupRUN, caption)
  36.             item.SetBackgroundColour(wx.GREEN)
  37.        
  38.         if popupID == "Link":
  39.             item = wx.MenuItem(menu, self.popupLINK, caption)
  40.        
  41.         if popupID == "View":
  42.             item = wx.MenuItem(menu, self.popupVIEW, caption)
  43.        
  44.         if popupID == "Config":
  45.             item = wx.MenuItem(menu, self.popupCONFIG, caption)
  46.        
  47.         if popupID == "Exit":
  48.             item = wx.MenuItem(menu, self.popupEXIT, caption)
  49.        
  50.         if popupID == "About":
  51.             item = wx.MenuItem(menu, self.popupABOUT, caption)
  52.      
  53.         if icon <> "":
  54.             ico = wx.Icon(icon, wx.BITMAP_TYPE_ICO, 16, 16)
  55.             bmp = wx.BitmapFromIcon(ico)
  56.             item.SetBitmap(bmp)
  57.         menu.AppendItem(item)
  58.         return menu
  59.     def CreateSubMenu(self, menu, sm, caption):
  60.         menu.AppendMenu(self.popupSUBMENU, caption, sm)
  61.        
  62.         return menu   
  63.     def SetListMenu(self, menu):
  64.         self.menu1 = menu
  65.     def evt_left_down(self, event):
  66.         print "evt_left_down"
  67.         self.PopupMenu(self.menu1)
  68. def SubMenu(T, menu, caption):
  69.     Sx2 = wx.Menu()
  70.     Sx2 = T.CreateItem(Sx2, "Link", "", "Link" )
  71.     Sx2 = T.CreateItem(Sx2, "Link", "", "Link" )
  72.     menu = T.CreateSubMenu(menu, Sx2, caption)
  73.     Sx2 = None
  74.     return menu
  75. #######################################################################
  76. TrayIco = "TrayMenu.ico"
  77. app = wx.PySimpleApp()
  78. T = TaskBarIcon(None, TrayIco, "TrayMenu)" )
  79. Mx = wx.Menu()
  80. Mx = T.CreateItem(Mx, "Run", "", "Run" )
  81. Mx.AppendSeparator()
  82. Sx = wx.Menu()
  83. Sx = T.CreateItem(Sx, "Run", "", "Run" )
  84. Sx = SubMenu(T, Sx, "SubMenu1-1" )
  85. Sx = T.CreateItem(Sx, "Run", "", "Run" )
  86. Sx = SubMenu(T, Sx, "SubMenu1-2" )
  87. Mx = T.CreateSubMenu(Mx, Sx, "SubMenu1" )
  88. Sx = None
  89. Mx.AppendSeparator()
  90. Sx = wx.Menu()
  91. Sx = T.CreateItem(Sx, "About", "", "About" )
  92. Mx = T.CreateSubMenu(Mx, Sx, "SubMenu2" )
  93. Sx = None
  94. Mx.AppendSeparator()
  95. Mx = T.CreateItem(Mx, "Exit", TrayIco, "Exit" )
  96. T.SetListMenu(Mx)
  97. 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.

Reply

Marsh Posté le 16-10-2007 à 15:14:25   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed