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
| import tkinter as tk
import re
class EntreeNumerique(tk.Entry) :
def __init__(self, parent, sep=' ') :
self._sep = sep
self._valeur = tk.StringVar()
self._valeur.trace_variable('w', self._changer)
tk.Entry.__init__(self, parent, bg='white', fg='blue', textvariable=self._valeur, width=30)
self.bind('<KeyRelease>', self._curseur)
def _curseur(self, evt) :
''' Pas le choix, faut repositionner le curseur à la fin '''
self.icursor(tk.END)
def _changer(self, *args) :
valeur = re.sub('[^\d]+', '', self._valeur.get())
if not valeur :
self._valeur.set('')
if len(self._valeur.get()) > 3 :
nv = self._sep.join([n for n in re.split('(\d{3})', valeur[::-1]) if n != ''])[::-1]
else :
nv = valeur
self._valeur.set(nv)
fenetre = tk.Tk()
fenetre.geometry('400x200')
cadre = tk.Frame(fenetre)
cadre.grid()
entreeNumerique = EntreeNumerique(cadre)
entreeNumerique.grid()
entreeNumerique.focus_set()
fenetre.mainloop() |
Partager