Bonjour,

je suis confronté à un problème métaphysique de portée de variable...
Voici un petit test qui illustre mon propos :
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
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'.
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' !

Alors, pourquoi ces 2 poids et 2 mesures ?

Pendant que j'y suis : comment on "bind" la barre d'espace ?