Conoce en Detalle el Widget "Entry()" de TKinter

¡Hola! Hoy vamos a explorar en detalle el widget `Entry()` de Tkinter, que es uno de los elementos más utilizados cuando se trabaja con interfaces gráficas en Python. Este widget permite a los usuarios ingresar y editar texto en una sola línea, lo que lo convierte en una herramienta fundamental para formularios y otras entradas de datos en tus aplicaciones.



Introducción

El widget `Entry` es parte de la biblioteca Tkinter, la cual es ampliamente usada para construir interfaces gráficas en Python. El `Entry` se utiliza para recibir una entrada de texto por parte del usuario. Es perfecto para crear campos de entrada como nombres de usuario, contraseñas, búsquedas, entre otros.


En este artículo, te mostraré cómo usar `Entry` en tus aplicaciones, además de describir en detalle todos sus parámetros para que puedas personalizarlo según tus necesidades.



1. Creando un widget Entry básico

Para comenzar a trabajar con un widget `Entry`, primero debes crear una instancia del widget en tu ventana principal.


# Crear un widget Entry

entrada = tk.Entry(mi_ventana)


Este código simple generará un campo de texto donde el usuario puede ingresar datos.



2. Parámetros del widget Entry

El widget `Entry` tiene una variedad de parámetros que puedes usar para personalizar su comportamiento y apariencia. A continuación, se describen los parámetros más importantes:


2.1 `bd` (border width)

Este parámetro establece el grosor del borde del widget `Entry`.


entrada = tk.Entry(mi_ventana, bd=5)


- Valor por defecto: `2`

- Tipo de valor: Entero (pixeles)



2.2 `bg` (background color)

Establece el color de fondo del widget `Entry`.


entrada = tk.Entry(mi_ventana, bg='lightblue')


- Valor por defecto: Depende del sistema.

- Tipo de valor: Color (puede ser un nombre de color como 'red' o un valor hexadecimal como '#FF0000').



2.3 `fg` (foreground color)

Determina el color del texto que se ingresa en el `Entry`.


entrada = tk.Entry(mi_ventana, fg='black')


- Valor por defecto: Depende del sistema.

- Tipo de valor: Color.



2.4 `font`

Permite definir la fuente del texto que se ingresa en el widget.


entrada = tk.Entry(mi_ventana, font=('Arial', 14))


- Valor por defecto: Depende del sistema.

- Tipo de valor: Tupla (nombre de la fuente, tamaño).



2.5 `width`

Define el ancho del campo de entrada en términos de número de caracteres.


entrada = tk.Entry(mi_ventana, width=30)


- Valor por defecto: `20`

- Tipo de valor: Entero (número de caracteres).



2.6 `show`

Este parámetro se utiliza para ocultar el texto que se escribe en el `Entry`, útil para campos de contraseña.


entrada = tk.Entry(mi_ventana, show='*')


- Valor por defecto: `None` (el texto es visible).

- Tipo de valor: Cadena (carácter que reemplaza al texto visible, como `'*'`).



2.7 `justify`

Permite alinear el texto dentro del widget `Entry`. Los valores posibles son `left`, `center`, `right`.


entrada = tk.Entry(mi_ventana, justify='center')


- Valor por defecto: `left`

- Tipo de valor: Cadena (`'left'`, `'center'`, `'right'`).



2.8 `state`

Define el estado del widget. Puede estar en estado normal, deshabilitado o solo de lectura.


entrada = tk.Entry(mi_ventana, state='normal')


- Valor por defecto: `'normal'`.

- Valores posibles:

  • `'normal'`: El usuario puede editar el texto.
  • `'disabled'`: El campo no es editable.
  • `'readonly'`: El campo es de solo lectura.



2.9 `relief`

Determina el estilo del borde del `Entry`.


entrada = tk.Entry(mi_ventana, relief='sunken')


- Valor por defecto: `'sunken'`.

- Valores posibles:

  • 'flat': Sin relieve, solo un contorno simple.
  • 'sunken': Como si el botón estuviera presionado hacia adentro.
  • 'raised': El botón parece que sobresale y se puede presionar.
  • 'groove': Un borde que parece tallado hacia adentro, creando un efecto de canal.
  • 'ridge': Un borde que parece elevado, como una cresta sobresaliendo del marco.



2.10 `validate` y `validatecommand`

Estos parámetros se usan juntos para validar la entrada del usuario.


- `validate`: Define cuándo se debe validar la entrada (`'focus'`, `'focusin'`, `'focusout'`, `'key'`, `'all'`, `'none'`).

- `validatecommand`: Especifica la función que se llama para validar la entrada.


Ejemplo:


def solo_numeros(d, i, P, s, S, v, V, W):

  if P.isdigit():

    return True

  else:

    return False


vcmd = (mi_ventana.register(solo_numeros), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')

entrada = tk.Entry(mi_ventana, validate='key', validatecommand=vcmd)


Este ejemplo muestra cómo utilizar la validación de entrada en un widget `Entry` de Tkinter para permitir únicamente números. Te explicaré paso a paso cómo funciona.


La función de validación `solo_numeros()` se utiliza para verificar que la entrada del usuario sea un número. Si lo que el usuario intenta escribir es un número, la función devuelve `True`, permitiendo que el texto se inserte en el campo `Entry`. Si no es un número, devuelve `False`, impidiendo la entrada. La función recibe varios parámetros (representados por `d`, `i`, `P`, `s`, `S`, `v`, `V`, `W`). Estos parámetros son proporcionados automáticamente por Tkinter y contienen información sobre la entrada que se está intentando validar.

  

  • `d`: Indica la acción que se está realizando: `1` para inserción y `0` para eliminación.
  • `i`: La posición en la que se está intentando insertar o eliminar el texto.
  • `P`: El contenido del `Entry` si la operación tiene éxito (es decir, el texto resultante si se permite la acción).
  • `s`: El contenido del `Entry` antes de la operación.
  • `S`: El texto que se está intentando insertar o eliminar.
  • `v`: El tipo de validación que se está realizando (en este caso, será `'key'`).
  • `V`: Indica el tipo de evento que activó la validación (`'focusin'`, `'focusout'`, `'key'`, etc.).
  • `W`: El nombre del widget `Entry` que está siendo validado.


Luego, la variable vcmd registra la función `solo_numeros()` con Tkinter, permitiendo que sea utilizada como una función de validación. El método `register()` convierte la función de Python en una que puede ser llamada por el sistema de eventos de Tkinter. Al ejecutarse esta función Tkinter pasará automáticamente los valores actuales de todos sus parámetros cuando se realice una validación.


Al terminar su ejecución, vcmd será una tupla que contiene la función de validación registrada y los especificadores de formato. Esta tupla se usará como el valor de `validatecommand` en el widget `Entry`.


entrada = tk.Entry(mi_ventana, validate='key', validatecommand=vcmd)


- `validate='key'`: Este parámetro indica que la validación debe ocurrir cada vez que el usuario presiona una tecla (es decir, cada vez que se intenta modificar el contenido del `Entry`).

- `validatecommand=vcmd`: Aquí se establece la tupla `vcmd` como el comando de validación. Cada vez que se presiona una tecla, Tkinter llama a la función `solo_numeros` con los parámetros actuales para determinar si la entrada es válida.


En definitiva. cada vez que el usuario intenta ingresar o modificar el texto en el widget `Entry`, Tkinter ejecuta la función `solo_numeros()`. La función revisa lo que se está intentando escribir (`P`) y, si todo el texto resultante es numérico (`P.isdigit()`), la función permite la entrada devolviendo `True`. Si el texto incluye algún carácter no numérico, la función devuelve `False`, impidiendo la modificación del campo de entrada.



2.11 `insertbackground`, `insertborderwidth`, `insertofftime`, `insertontime`, `insertwidth`

Estos parámetros se relacionan con la apariencia y el comportamiento del cursor de inserción:

  • `insertbackground`: Color del cursor de inserción.
  • `insertborderwidth`: Grosor del borde del cursor de inserción.
  • `insertofftime`: Tiempo en milisegundos que el cursor está oculto (en el parpadeo).
  • `insertontime`: Tiempo en milisegundos que el cursor está visible (en el parpadeo).
  • `insertwidth`: Ancho del cursor de inserción.


Ejemplo de todos los parámetros en uso

entrada = tk.Entry(mi_ventana,

          bd=3,

          bg='white',

          fg='blue',

          font=('Helvetica', 12),

          width=25,

          show='*',

          justify='center',

          state='normal',

          relief='sunken',

          insertbackground='red',

          insertborderwidth=2,

          insertofftime=500,

          insertontime=500,

          insertwidth=3)


image


Este código configura un widget `Entry` con múltiples personalizaciones, creando un campo de entrada centrado, con texto azul, fondo blanco, y un cursor de inserción rojo.



3. Interactuando con el widget Entry

El widget `Entry` permite a los desarrolladores interactuar con su contenido programáticamente. Aquí algunos métodos útiles:


3.1 `get()`

Este método devuelve el contenido actual del `Entry`.


contenido = entrada.get()

print(contenido)



3.2 `insert()`

Inserta texto en una posición específica dentro del `Entry`.


entrada.insert(0, "Texto inicial")



3.3 `delete()`

Elimina texto dentro del `Entry`.


entrada.delete(0, 'end') # Borra todo el contenido



3.4 `config()`

Permite actualizar las propiedades del `Entry` después de su creación.


entrada.config(state='disabled')



¡El Widget 'Entry' está genial!

El widget `Entry` de Tkinter es una herramienta versátil para la entrada de texto en aplicaciones gráficas. Con los múltiples parámetros que ofrece, puedes personalizarlo completamente para adaptarlo a las necesidades específicas de tu aplicación. Ya sea que necesites un simple campo de texto o una entrada de datos más compleja, `Entry` te proporciona la flexibilidad para lograrlo.


Espero que este artículo te haya proporcionado un entendimiento profundo de cómo funciona el widget `Entry` en Tkinter, y que ahora te sientas más confiado para utilizarlo en tus proyectos. ¡Feliz programación!



Hay mucho más contenido sobre Python para ti


Puedes conocer todo el contenido que comparto en mi perfil de LinkedIn


Puedes descargar GRATIS mi manual completo en pdf de Python Rápido


image

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.