Bonjours, j'aimerait que mes entry ne prennent en compte que certains caractères, j'ai trouvé ça sur stackOverflow (vite fait édité par moi-même, pour comprendre je décortique petit à petit)
mais là ... je n'y comprend rien...
Je n'ai trouvé aucune doc, root.register(self.validate) et self, action, index, value_if_allowed, prior_value, text, validation_type, trigger_type, widget_name doit être la clé de la compréhension.
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 from tkinter import * class window2: def __init__(self): self.text1 = Entry(root, validate = 'key', validatecommand = (root.register(self.validate),'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')) self.text1.grid() def validate(self, action, index, value_if_allowed, prior_value, text, validation_type, trigger_type, widget_name): if text in '0123456789.-+': try: float(value_if_allowed) return True except ValueError: return False else: return False root = Tk() a = window2() root.mainloop()
Si je comprend bien la fonction renvoie True ou False donc root.register(True) ou root.register(False) c'est ça ?
edit : si je comprend bien les quelques docs validatecommand = (root.register(self.validate) revient juste à validatecommand = True ou validatecommand = False c'est bien ça ?
Partager