EmaSMach

Tkinter - Entry: Formatting string interactively

May 23rd, 2021
885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.19 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import ttk
  3.  
  4.  
  5. class MyFrame(Frame):
  6.     def __init__(self, *args, **kwargs) -> None:
  7.         super().__init__(*args, **kwargs)
  8.         self.make_widgets()
  9.         self.pack()
  10.  
  11.     def make_widgets(self):
  12.         self.entvar = StringVar() # por si se usa en la aplicación
  13.         # usamos ttk.Entry, porque no desactiva la validación en caso de modificar el entry progrmáticamente
  14.         self.ent = ttk.Entry(self, validate='key', textvariable=self.entvar)
  15.         vlcm = (self.register(self.add_dots), "%P")
  16.         self.ent.config(validatecommand=vlcm)
  17.         self.ent.pack()
  18.  
  19.     def add_dots(self, P):
  20.         P = P.replace('.', '') # quitamos los puntos, nos quedamos solo con los dígitos
  21.         if P.isdigit() or len(P) == 0:
  22.             P = P[::-1]  # damos vuelta el string
  23.             dotted_string = '.'.join(P[i:i + 3] for i in range(0, len(P), 3))
  24.             formatted_string = dotted_string[::-1]  # volvemos a dar vuelt la cadena
  25.             self.ent.delete(0, END)
  26.             self.ent.insert(0, formatted_string)
  27.             return True
  28.         else:
  29.             return False
  30.  
  31.  
  32. root = Tk()
  33. app = MyFrame(root)
  34. app.mainloop()
  35.  
Advertisement
Add Comment
Please, Sign In to add comment