WhatsApp

  

3. Widgets esenciales en Tkinter: Label, Button y Entry – Guía completa con ejemplos y buenas prácticas

Descubre cómo usar los widgets básicos de Tkinter (Label, Button y Entry) con ejemplos de código, personalización de estilos, trucos de depuración y comparativas de características.

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 (requiere PhotoImage).
  • Padding interno: padx y pady para 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:

  • activebackground y activeforeground – 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" y validatecommand – 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.Treeview o Canvas con scroll.
  • Escalabilidad: Agrupa widgets en Frame o ttk.Notebook para 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
ASIMOV Ingeniería S. de R.L. de C.V., Emiliano Nava 10 diciembre, 2025
Compartir
Iniciar sesión dejar un comentario

  
2. Entendiendo la ventana principal y el mainloop de Tkinter
Guía completa para comprender la ventana raíz (Tk) y las ventanas secundarias (Toplevel) en Tkinter, el ciclo de eventos y por qué es indispensable llamar a mainloop(). Incluye ejemplos de personalización de título, tamaño, posición e ícono.