Bonjour,
Je me lance dans Python3 et j'ai un peu de mal avec les différents concepts utilisés.
J'ai réussi à faire un filtrage de la saisie dans un widgets Entry
J'essaie tant bien que mal à faire pareil avec 2 Entry et là, c'est le drame.
Ne comprenant pas tout, je n'arrive pas à faire marcher mon code
Le premier code fonctionne très bien.
Le second code adapté du premier, c'est la cata
Merci pour votre aide
en essayant avec 2 Entry :
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
35
36
37
38 from tkinter import * import tkinter as Tk def OnValidate(*args): cpt=0 chaine=s.get().replace(',','.') chn_rempl='' sign=False for c in chaine: if c in '1234657890': if chn_rempl=='' and c=='0': continue else: chn_rempl+=c continue elif c=='.': cpt += 1 if cpt>1: continue else: if chn_rempl=='': chn_rempl='0' e.icursor(2) chn_rempl+=c elif c=='-': sign=not sign else: continue if sign: chn_rempl='-'+chn_rempl s.set(chn_rempl) root = Tk.Tk() s = Tk.StringVar() s.trace_variable("w", OnValidate) e = Tk.Entry(root, textvariable=s) e.pack() root.mainloop()
il faudrait (selon moi!) passer s (StringVar) en paramètre
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
35
36
37
38
39
40
41
42
43
44
45 from tkinter import * import tkinter as Tk def valider(cc): cpt=0 chaine=cc.get().replace(',','.') chn_rempl='' sign=False for c in chaine: if c in '1234657890': if chn_rempl=='' and c=='0': continue else: chn_rempl+=c continue elif c=='.': cpt += 1 if cpt>1: continue else: if chn_rempl=='': chn_rempl='0' #cp.icursor(2) chn_rempl+=c elif c=='-': sign=not sign else: continue if sign: chn_rempl='-'+chn_rempl cc.set(chn_rempl) root = Tk.Tk() s = Tk.StringVar() t = Tk.StringVar() def validers(): valider(s) def validert(): valider(t) s.trace_variable("w", validers) t.trace_variable("w", validert) e = Tk.Entry(root, textvariable=s) f = Tk.Entry(root, textvariable=t) e.pack() f.pack() root.mainloop()
Partager