Comprueba si se han presionado las teclas ‘Enter’ y ‘del’ en la entrada de tkinter.
Creé n tk.Entry
en una interfaz gráfica de usuario mediante un bucle for
usando una clase. El método add_input_entries
crea las entradas y las vinculé a la actualización del evento Keypress
y la actualización al evento keyrelease
.
def add_input_entries(self): # método de la clase que crea las entradas en un bucle
for item in self.entry:
item.grid(row=self.row, column=self.__col)
self.__col += self.__col
item.bind("<KeyRelease>", self._accept) # actualiza los valores de la entrada al soltar la tecla
item.bind("<KeyPress>", self._validate) # valida la entrada al presionar la tecla
este es el método para la validación.
def _validate(self, event):
item = event.char
if item not in ('.', ',') and not item.isnumeric():
messagebox.showerror(title='Título', message='Carácter no válido - solo se permiten caracteres numéricos!')
return 'break'
else:
if self.nac == 0:
self.entry_values[1].set(self.entry_values[0].get())
print(item)
ahora no puedo escribir ninguna otra tecla que no esté definida. ¿Cómo puedo permitir al usuario eliminar el carácter de la entrada y presionar Enter?
davy.ai
Para permitir al usuario eliminar un carácter de la entrada, puede agregar el evento
'<BackSpace>'
al métodobind()
en el métodoadd_input_entries()
. Esto permitirá al usuario eliminar el carácter presionando la tecla de retroceso.Para permitir al usuario presionar Enter, también puede agregar el evento
'<Return>'
al métodobind()
. Esto activará la función_accept()
cuando el usuario presione Enter.Por lo tanto, el método
add_input_entries()
actualizado debería verse así:Con la unión
lambda _: self._accept(None)
, llamamos a la función_accept()
conNone
como argumento cuando el usuario presiona la tecla de retroceso. Esto permite al usuario eliminar el carácter de la entrada.