Bonjour à tous,
Dans ton code, il y a deux choses qui me choquent:
- je ne comprend pas pourquoi tu dérives la class ContextMenu de la
class MainFrame,
- et il n'y a pas d'instance de la class ContextMenu.
Comme l'évenement EVT_Context_Menu est attaché à la MainFrame, il est
préférable que la fonction qui le traite soit une méthode de la mainFrame.
Personnellement, j'écrirai le code suivant:
import wx
class ContextMenu (wx.Frame):
def ShowMenu (self):
menu =wx.Menu ()
menu.Append (1,"bonjour")
self.PopupMenu (menu)
class MainFrame (wx.Frame):
def __init__ (self):
wx.Frame.__init__ (self,None,-1,title ="essai")
self.Bind (wx.EVT_CONTEXT_MENU,self.onContextMenu)
def onContextMenu(self,evt):
ContextMenu(self).ShowMenu()
class MainApp (wx.App):
def OnInit (self):
fen =MainFrame ()
fen.Show (True)
return True
app =MainApp ()
app.MainLoop ()
Amitiés.
Paul.
Le 07/03/2012 09:46, yannick a écrit :
>
> bonjour, dans mon exemple, je cré 3 classes, une pour la frame, une pour
> l'application, et j'aimerais créé une autre qui doit gérer les menu
> contextuels,
> si je fais tout dans la classe pour la Frame aucun pb, mais j'aimerais bien
> en faire une pour les menus .
> mais je n'y arrive pas !une idée ?
> voici le code source :
> import wx
> class ContextMenu (MainFrame):
> def onContextMenu (self,evt):
> menu =wx.Menu ()
> menu.Append (1,"bonjour")
> self.PopupMenu (menu)
>
> class MainFrame (wx.Frame):
> def __init__ (self):
> wx.Frame.__init__ (self,None,-1,title ="essai")
> self.Bind (wx.EVT_CONTEXT_MENU,ContextMenu.onContextMenu)
>
> class MainApp (wx.App):
> def OnInit (self):
> fen =MainFrame ()
> fen.Show (True)
> return True
>
> app =MainApp ()
> app.MainLoop ()
>
>
> Progliste :
> Pour se désinscrire de la liste :
> mailto:[email protected]?subject=unsubscribe
>
> Pour voir les archives de la liste :
> http://www.mail-archive.com/[email protected]/
>
> Pour accéder aux fichiers de la liste
> http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
> Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je
> vous répondrez en privé.
>
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je
vous répondrez en privé.