Bonjour à tous,
Dans le code ci-après, je cherche à comprendre à quoi correspond la 2° valeur qui est renvoyée par 'args' : ici c'est '' et à quoi elle sert.
'PY_VAR0' est le nom de textvariable et 'w' est le mode mais '' ?
Serait-il possible d'utiliser cette deuxième valeur pour 'remonter' le nom en clair du 'textvariable' ( s0, s1, etc. ) dans l'exemple.
Sinon comment obtenir le nom de textvariable dans la fonction 'OnValidate(*args)' pour factoriser dans le cas de saises similaires multiples ?
Apparemment, la fonction 'vars()[x]' qui fonctionne bien dans la boucle principale pour construire les 'Entry' et 'textvariable' est inopérante dans la fonction 'OnValidate(*args)'.
Je souhaitais reconstruire ainsi le nom de la StringVar() mais ça marche pas.
L.P.
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
33
34 from tkinter import* def affiche(event): w=event.widget etq.config(text=w.get()) def OnValidate(*args): # print(args) # donne-> ('PY_VAR0', '', 'w') ## q=int(args[0][6:8]) ; print(q) ## tv='s%d' % q ; print(tv) ## print(vars()[tv]) ## non reconnu comme variable for c in s0.get(): if not c.isdigit(): root.event_generate('<BackSpace>') root = Tk() entries = [] for z in range(-1,6): t='s%d' % (z+1) # ;print(t) ; vars()[t]='' vars()[t]=StringVar() # ; print(vars()[t]) vars()[t].trace_variable("w", OnValidate) p='e%d' % (z+1) ; print(p) vars()[p] = Entry(root, textvariable =vars()[t]) vars()[p].pack() vars()[p].bind('<Return>', affiche) print(vars()[p]) entries.append(vars()[p],) etq=Label(text='') etq.pack() entries[0].focus_set() root.mainloop()
Partager