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é.

Répondre à