Widgets esenciales en Tkinter: Label, Button y Entry
Aprende a crear interfaces gráficas con los componentes básicos de Tkinter, personalízalos y aplícalos en escenarios reales.
Introducción a Tkinter
Tkinter es la librería estándar de Python para crear interfaces de usuario (GUI). Está basada en la toolkit Tcl/Tk y funciona en Windows, macOS y Linux sin necesidad de dependencias externas.
Los tres widgets que cubriremos son los más usados en cualquier aplicación: Label (texto o imagen), Button (acción) y Entry (entrada de texto).
Comparativa rápida de características
Label
- Solo muestra información (texto o imagen).
- No recibe foco por defecto.
- Propiedades clave:
text,image,bg,fg,font.
Button
- Ejecuta una función al pulsarse.
- Puede contener texto e imagen simultáneamente.
- Propiedades clave:
command,state,bg,fg,font,activebackground.
Entry
- Campo de texto editable.
- Puede ocultar caracteres (modo contraseña).
- Propiedades clave:
show,validate,bg,fg,font,width.
Label – Mostrar información
El Label es el widget más simple. Sirve para presentar texto estático, imágenes o combinaciones de ambos.
Ejemplo básico
import tkinter as tk
root = tk.Tk()
root.title("Ejemplo de Label")
lbl = tk.Label(root, text="¡Hola, Tkinter!", font=("Helvetica", 16), fg="white", bg="#2c3e50")
lbl.pack(padx=20, pady=20)
root.mainloop()
En este ejemplo se personaliza la fuente, el tamaño, el color del texto (fg) y el fondo (bg).
Personalización avanzada
- Imagen:
image=photo(requierePhotoImage). - Padding interno:
padxypadypara espacio alrededor del texto. - Anchor: controla la alineación dentro del widget (p.ej.,
anchor="w").
Para cambiar la apariencia en tiempo real, usa lbl.config(...).
Button – Ejecutar acciones
El Button permite enlazar una función de Python que se ejecutará al hacer clic.
Ejemplo con función simple
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title("Botón que muestra mensaje")
def saludar():
messagebox.showinfo("Saludos", "¡Has pulsado el botón!")
btn = tk.Button(root,
text="Púlsame",
command=saludar,
font=("Arial", 12, "bold"),
bg="#27ae60",
fg="white",
activebackground="#2ecc71",
padx=10,
pady=5)
btn.pack(pady=20)
root.mainloop()
Observa los siguientes atributos de personalización:
activebackgroundyactiveforeground– colores al presionar.state="disabled"– desactiva temporalmente el botón.image+compound="left"– combina texto e ícono.
Entry – Capturar texto del usuario
El widget Entry permite al usuario introducir una cadena de texto de una sola línea.
Ejemplo de captura y validación
import tkinter as tk
root = tk.Tk()
root.title("Entrada de texto y validación")
# Variable vinculada al Entry
texto = tk.StringVar()
entry = tk.Entry(root,
textvariable=texto,
font=("Consolas", 12),
bg="#ecf0f1",
fg="#2c3e50",
width=30)
entry.pack(padx=20, pady=10)
def mostrar():
print("Valor introducido:", texto.get())
# Puedes añadir lógica de validación aquí
btn = tk.Button(root, text="Obtener valor", command=mostrar)
btn.pack(pady=5)
root.mainloop()
Características útiles:
show="*"– oculta caracteres (campo de contraseña).validate="key"yvalidatecommand– validación en tiempo real.insert(0, "texto predeterminado")– escribe un valor inicial.
Mejores prácticas y troubleshooting
Gestión de fuentes y estilos
Reutiliza objetos tkinter.font.Font para mantener consistencia y facilitar cambios globales:
from tkinter import font
fuente_titulo = font.Font(family="Helvetica", size=18, weight="bold")
label = tk.Label(root, text="Título", font=fuente_titulo)
Uso de grid vs pack
Para interfaces más complejas, grid permite alineación en filas y columnas, mientras que pack es ideal para layouts simples.
Depuración visual
Activa el modo de depuración con root.update_idletasks() y verifica la geometría con widget.winfo_width() y widget.winfo_height().
Rendimiento, escalabilidad y compatibilidad
- Rendimiento: Tkinter es ligero; sin embargo, para listas grandes usa
ttk.TreeviewoCanvascon scroll. - Escalabilidad: Agrupa widgets en
Frameottk.Notebookpara modularizar la UI. - Compatibilidad: Funciona en Python 3.8+ en Windows, macOS y distribuciones Linux con X11/Wayland.
Conclusión
Los widgets Label, Button y Entry forman la columna vertebral de cualquier aplicación Tkinter. Dominar su personalización y manejo de eventos permite construir interfaces profesionales con muy poco código.
Experimenta combinando estos componentes, reutiliza estilos y sigue las mejores prácticas de validación y gestión de layout para obtener aplicaciones robustas y mantenibles.
3. Widgets esenciales en Tkinter: Label, Button y Entry – Guía completa con ejemplos y buenas prácticas