scope des sous fonction et TkInter
Bonjour,
je suis confronté à un problème métaphysique de portée de variable...
Voici un petit test qui illustre mon propos :
Code:
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
| def ti_test ():
import Tkinter
dialog = Tkinter.Tk()
dialog.grid()
button = Tkinter.Button( dialog,text='OK', command=dialog.quit )
button.grid()
i = 123 # 'i' est bien défini au même niveau que 'button'
def spam ():
print 'spam'
button['text'] = button['text'].swapcase()
def eggs ():
print 'eggs ',i
i += 1
dialog.bind('a',lambda e : spam())
dialog.bind('z',lambda e : eggs())
dialog.mainloop()
dialog.destroy()
ti_test() |
Quand j'appuie sur 'a' je vois bien mon 'OK' devenir 'ok' et vice versa. Donc, la variable 'button' est visible depuis 'spam'. :D
Mais quand j'appuis sur 'z', j'ai un exception qui me dit que 'i' n'est pas défini dans le contexte de 'eggs' ! :aie:
Alors, pourquoi ces 2 poids et 2 mesures ? :calim2:
Pendant que j'y suis : comment on "bind" la barre d'espace ?