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:
"command=boss.test" ne convient donc pas, et je ne trouve pas la solution :s
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
PS: Si dans ma classe MyMenuBar je rajoute l'instruction
J'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part print boss,type(boss)
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part . <type 'instance'>
![]()
Partager