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

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()
en essayant avec 2 Entry :
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()