Python ofrece una variedad de marcos para trabajar con aplicaciones GUI. La interfaz Tkinter o Tk es una de las interfaces de Python más utilizadas para crear aplicaciones basadas en GUI. Hay aplicaciones que requieren la validación de campos de texto para evitar entradas no válidas por parte del usuario antes de enviar el formulario. Python permite la validación de entrada al permitir el seguimiento de variables mediante una función de devolución de llamada. Esta función se llama cada vez que se agrega/elimina una entrada a/de un widget de entrada. Algunas aplicaciones validan la entrada en el envío del formulario, pero el siguiente fragmento de código realiza la validación con cada pulsación de tecla del teclado.
- Importar módulo tkinter
import tkinter
- Importar submódulos tkinter
from tkinter import *
- Definir la función de «devolución de llamada»
def callback(input): if input.isdigit(): print(input) return True elif input is "": print(input) return True else: print(input) return False
Explicación
La función de devolución de llamada verifica la entrada en el widget de entrada para una entrada válida. Si la entrada es válida, devuelve True; de lo contrario, False. En este ejemplo, se verifica el tipo numérico de la entrada ingresada a través del teclado. Si la entrada es de tipo numérico, la función de devolución de llamada devuelve verdadero. Para la operación de eliminación, la función de devolución de llamada devuelve verdadero ya que la entrada es «» . Sin embargo, para cualquier entrada no numérica, la función de devolución de llamada devuelve falso. - Crear la ventana principal
root=Tk()
Sintaxis: Tk(screenName=Ninguno, baseName=Ninguno, className=’Tk’, useTk=1)
Parámetro: En este ejemplo, la clase Tk se instancia sin argumentos.
Explicación
Este método crea un widget principal que suele ser la ventana principal de una aplicación. - Crear widget de entrada
e=Entry(root)
Sintaxis: Entrada(maestro, **opciones)
Parámetro:- maestro: representa la ventana principal (aquí raíz).
- Opciones: las opciones admitidas son bg, bd, comando, cursor, fuente, exportar selección, justificar, relieve, color de resaltado, fg, seleccionar fondo, seleccionar primer plano, seleccionar ancho de borde, mostrar, comando de desplazamiento x, estado, variable de texto y ancho.
Valor devuelto: Devuelve una string (.!entrada) .
Explicación
Este método se utiliza para crear el widget de entrada en el widget principal (raíz). - Especifique la posición del widget de entrada dentro de la ventana principal
e.place(x=50, y=50)
Sintaxis: place(x, y)
Parámetro:- x: posición del widget de entrada con respecto al widget principal a lo largo del eje X.
- y: posición del widget de entrada con respecto al widget principal a lo largo del eje Y.
Explicación:
este método especifica la posición del widget de entrada en la ventana principal (raíz). - Registre la función de devolución de llamada
reg=root.register(callback)
Sintaxis: registro(función)
Parámetro:- función: la función que se llamará para validar la entrada en el widget de entrada.
Valor devuelto: este método devuelve una string de caracteres que se puede usar para llamar a la función.
Explicación
El método register() devuelve una string que se asigna a una variable ‘reg’ que se usa para llamar a la función de devolución de llamada en las etapas posteriores. - Llame a la función de devolución de llamada para validar la entrada en el widget de entrada
e.config(validate="key", validatecommand=(reg, '%P'))
Sintaxis: config(validar=”clave”, validarcomando=(reg, ‘%P’))
Parámetro:- validar: esta opción se usa para especificar cuándo se llamará a la función de devolución de llamada para validar la entrada. El valor de «clave» especifica que la validación se produce cada vez que cualquier pulsación de tecla (entrada desde el teclado) cambia el contenido del widget.
- comando de validación: esta opción se utiliza para especificar la función de devolución de llamada. La función no se llama directamente, sino que se pasa una variable que se registró en los pasos anteriores. Se pasa ‘%P’ para indicar el valor que tendrá el texto si se permite el cambio.
Explicación
La opción Validar admite otros valores como enfoque, enfoque adentro, enfoque fuera, todos y ninguno. El valor predeterminado es «ninguno», lo que significa que no hay validación.
La opción Validatecommand admite otros valores como %d, %i, %s, %S, %v, %V y %W. El porcentaje de sustitución se puede agregar para que cada parámetro se pase a la función de Python.
El widget de entrada también admite una opción de comando no válido que llama a una función cada vez que el comando de validación devuelve Falso.
Estos pueden ser utilizados en base a los requisitos del usuario. - Ejecutar la aplicación
root.mainloop()
Sintaxis: mainloop()
Explicación
El mainloop() es un bucle infinito que se utiliza para ejecutar la aplicación siempre que la ventana no esté cerrada.
Código completo para la validación del widget de Entrada
import tkinter from tkinter import * def callback(input): if input.isdigit(): print(input) return True elif input is "": print(input) return True else: print(input) return False root = Tk() e = Entry(root) e.place(x = 50, y = 50) reg = root.register(callback) e.config(validate ="key", validatecommand =(reg, '% P')) root.mainloop()
Salida: (Se recomienda la vista de pantalla completa)
Explicación
Cuando ingresamos dígitos usando nuestro teclado, la función de devolución de llamada devuelve verdadero y el valor se permite en el widget de entrada. Sin embargo, al ingresar alfabetos desde el teclado, la función de devolución de llamada devuelve falso y no se permite ingresar el valor en el widget de entrada. Para tener una idea más clara sobre el funcionamiento de la función de devolución de llamada, la entrada enviada a través del teclado está impresa en la consola. Se puede ver que cualquier entrada no numérica se imprime en la consola pero no está permitida en el widget de entrada. Además, tanto la inserción como la eliminación de valores numéricos están permitidas en el widget de entrada.
Publicación traducida automáticamente
Artículo escrito por Shreyasi_Chakraborty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA