separar - Python Tkinter: elimine el último carácter de una cadena
reemplazar caracteres en python (2)
Estoy haciendo una entrada que solo permite el ingreso de números. Actualmente estoy atascado en eliminar el carácter que acaba de ingresar si ese personaje no es un número entero. Si alguien reemplazara el "EN BLANCO" con lo que necesita entrar allí, sería de mucha ayuda.
import Tkinter as tk
class Test(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.e = tk.Entry(self)
self.e.pack()
self.e.bind("<KeyRelease>", self.on_KeyRelease)
tk.mainloop()
def on_KeyRelease(self, event):
#Check to see if string consists of only integers
if self.e.get().isdigit() == False:
self.e.delete("BLANK", ''end'')#I need to replace 0 with the last character of the string
else:
#print the string of integers
print self.e.get()
test = Test()
También puede cambiar la línea de arriba, a esto:
if not self.e.get().isdigit():
#take the string currently in the widget, all the way up to the last character
txt = self.e.get()[:-1]
#clear the widget of text
self.e.delete(0, tk.END)
#insert the new string, sans the last character
self.e.insert(0, txt)
o:
if not self.e.get().isdigit():
#get the length of the string in the widget, and subtract one, and delete everything up to the end
self.e.delete(len(self.e.get)-1, tk.END)
Es un buen trabajo poner un ejemplo de trabajo para que lo usemos, ayudó a acelerar esto.
Si está haciendo la validación de datos, debe usar las características integradas del widget de entrada, específicamente el validatecommand
y validate
attributes.
Para una descripción de cómo estos atributos, vea esta respuesta .