Bonjour à tous,

Cherchant à créer un format "numérique" pour des Entry Tkinter, j'utilise "validate" afin de limiter la saisie (pas de problèmes !), mais je cherche également à modifier la valeur du widget selon certaines conditions, et c'est là que je bloque : en utilisant validatecommand, je n'arrive pas à entrer mon objet dans les paramètres, seulement son nom sous format string. Ceci semble normal du fait du "register", mais je souhaite donc pour "convertir" la string en objet.

Auriez-vous une idée de comment m'y prendre ?

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
import tkinter as tk
 
def NumValidate(keycode, MyEntry, valuetocheck):
 
    if keycode in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]:
        return True
 
    if keycode in [",", "."] and len(valuetocheck) == 0:
        MyEntry.insert(0, "0.")
        return False
 
    if keycode in [",", "."] and "." in valuetocheck[:-1]:
        return False
 
    if keycode in [".", ","]:
        MyEntry.delete(0, "end")
        MyEntry.insert(0, valuetocheck[:-1] + ".")
        return False
 
    return False
 
root = tk.Tk()
 
myEntry = tk.Entry(root, name='myEntry', width=40)
myEntry.config(validate="key", validatecommand=(root.register(NumValidate), '%S', '%W', '%s'))
 
myEntry.pack()
 
root.mainloop()
En vous remerciant par avance,