Bonjour à tous

J'ai écris une classe qui instancie un widget Frame. Ensuite, je fais appel à une classe qui instancie un widget MenuBar, que je grid dans le Frame. Ceci fonctionne sans problème, le souci c'est quand j'essaie d'appeler mes fonctions de la première classe à partir de la classe du MenuBar :s

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class MyApp(Tk):
    def __init__( self ):
        Tk.__init__( self)
        self.title( "Code Barres Gen." )
        self.frame = MyFrame( self )
 
class MyMenuBar(Frame):
    def __init__(self,boss=None):
        Frame.__init__(self,borderwidth=2,relief=RIDGE,bg='white')
 
        mb_action=Menubutton(self,fg='dark blue', text='Actions',bg='white')
        mb_action.pack(side=LEFT)
        mb_action.menu= Menu(mb_action)
 
        mb_action.menu.add_command(label='Configuration',command=boss.test)
 
        mb_action['menu'] = mb_action.menu
 
class MyFrame(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
 
        mBar = MyMenuBar(self.master)
        mBar.grid(row=0,column=0,columnspan=2,padx=5,pady=5)
 
        #reste de l'initialisation
 
    def test(self):
        print 'test reussi'
 
if __name__=='__main__':
    MyApp().mainloop()

Ce code me retourne le message d'erreur suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Traceback (most recent call last):
  File "C:\Python26\folder\gen.py", line 577, in <module>
    MyApp().mainloop()
  File "C:\Python26\folder\gen.py", line 14, in __init__
    self.frame = MyFrame( self )
  File "C:\Python26\folder\gen.py", line 66, in __init__
    mBar = MyMenuBar(self.master)
  File "C:\Python26\folder\gen.py", line 24, in __init__
    mb_action.menu.add_command(label='Configuration',command=boss.test)
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1722, in __getattr__
    return getattr(self.tk, attr)
AttributeError: test
"command=boss.test" ne convient donc pas, et je ne trouve pas la solution :s

PS: Si dans ma classe MyMenuBar je rajoute l'instruction

J'obtiens:

Merci de votre aide