El widget `Label` de Tkinter es uno de los componentes fundamentales en la creación de interfaces gráficas en Python. Su función principal es mostrar texto o imágenes estáticas en la ventana. Aunque a primera vista parece sencillo, el `Label` tiene muchas opciones de personalización, lo que lo hace extremadamente versátil.
En este post, vamos a explorar cómo crear etiquetas (`Label`), cuáles son sus parámetros, métodos, y cómo puedes utilizarlas en tus aplicaciones gráficas de Tkinter.
El `Label` es un widget que muestra texto o imágenes dentro de una ventana de Tkinter. Es perfecto para mostrar mensajes informativos, títulos, o incluso imágenes. Puedes personalizar el estilo del texto o la imagen, como el tipo de fuente, color, y alineación, entre otros.
La forma básica de crear un `Label` es proporcionándole un widget padre y el texto que deseas mostrar:
import tkinter as tk
ventana = tk.Tk()
etiqueta = tk.Label(ventana, text="Hola, Tkinter!")
etiqueta.pack()
ventana.mainloop()
En este ejemplo:
- `ventana` es el widget padre (la ventana principal).
- `text="Hola, Tkinter!"` es el texto que mostrará el `Label`.
- `pack()` organiza el widget en la ventana.
El widget `Label` tiene varios parámetros que te permiten personalizar su apariencia y comportamiento. A continuación, los más importantes:
1. `master`:
- El widget padre donde se colocará el `Label`. Puede ser la ventana principal o un contenedor como un `Frame`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Hola!")
2. `text`:
- El texto que se mostrará en el `Label`.
Ejemplo:
etiqueta = tk.Label(ventana, text="¡Bienvenido a mi app!")
3. `bg` o `background`:
- El color de fondo del `Label`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Con fondo azul", bg="blue")
4. `fg` o `foreground`:
- El color del texto.
Ejemplo:
etiqueta = tk.Label(ventana, text="Texto en rojo", fg="red")
5. `font`:
- Establece la fuente del texto, que puede incluir el tipo de letra, el tamaño, y otros atributos (negrita, cursiva).
Ejemplo:
etiqueta = tk.Label(ventana, text="Texto con estilo", font=("Arial", 16, "bold"))
6. `padx` y `pady`:
- Añaden espacio de relleno horizontal (`padx`) y vertical (`pady`) dentro del `Label`, lo que proporciona espacio adicional alrededor del texto.
Ejemplo:
etiqueta = tk.Label(ventana, text="Con relleno", padx=20, pady=10)
7. `width` y `height`:
- Especifican el ancho y alto del `Label` en caracteres para texto o píxeles para imágenes.
Ejemplo:
etiqueta = tk.Label(ventana, text="Ancho de 20 caracteres", width=20)
8. `anchor`:
- Controla la alineación del contenido dentro del `Label`. Puede ser valores como `tk.N`, `tk.S`, `tk.E`, `tk.W`, `tk.CENTER` (predeterminado), o combinaciones (`tk.NE`, `tk.SW`).
Ejemplo:
etiqueta = tk.Label(ventana, text="Texto alineado", anchor="e") # Alineado a la derecha
9. `relief`:
- Establece el estilo del borde del `Label`. Los valores posibles son: `flat` (predeterminado), `raised`, `sunken`, `solid`, `ridge`, o `groove`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Borde sólido", relief="solid", bd=2)
10. `bd` o `borderwidth`:
- El grosor del borde del `Label`. Si `relief` está establecido, puedes usar este parámetro para ajustar el grosor del borde.
Ejemplo:
etiqueta = tk.Label(ventana, text="Borde de 5px", relief="raised", bd=5)
11. `image`:
- Permite mostrar una imagen en lugar de texto. Debes usar un objeto `PhotoImage` para cargar la imagen.
Ejemplo:
imagen = tk.PhotoImage(file="imagen.png")
etiqueta = tk.Label(ventana, image=imagen)
12. `compound`:
- Si tienes tanto texto como imagen en el `Label`, este parámetro define la disposición relativa entre el texto y la imagen. Los valores incluyen: `left`, `right`, `top`, `bottom`, `center`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Texto con imagen", image=imagen, compound="left")
13. `justify`:
- Controla cómo se alinean varias líneas de texto cuando el `Label` tiene varias líneas. Los valores posibles son: `left`, `right`, o `center`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Línea 1\nLínea 2\nLínea 3", justify="right")
14. `wraplength`:
- Establece la longitud máxima de una línea antes de que se realice el ajuste de línea (en píxeles).
Ejemplo:
etiqueta = tk.Label(ventana, text="Este es un texto largo que se ajustará.", wraplength=150)
15. `state`:
- Establece el estado del `Label`. Los valores posibles son `normal` (predeterminado) o `disabled`.
Ejemplo:
etiqueta = tk.Label(ventana, text="Texto deshabilitado", state="disabled")
El widget `Label` hereda muchos métodos útiles de la clase `Widget` en Tkinter. Aquí algunos de los métodos más comunes y útiles:
1. `config()` o `configure()`:
- Permite cambiar las propiedades del `Label` después de haber sido creado.
Ejemplo:
etiqueta.config(text="Texto actualizado", fg="green")
2. `pack()`, `grid()`, `place()`:
- Estos son los métodos de geometría utilizados para posicionar el `Label` dentro de la ventana o del widget padre.
Ejemplo usando `pack()`:
etiqueta.pack(padx=10, pady=10)
3. `winfo_children()`:
- Devuelve una lista de los widgets hijos del `Label` (en caso de que los tenga).
Ejemplo:
hijos = etiqueta.winfo_children()
print(hijos)
4. `winfo_width()` y `winfo_height()`:
- Devuelven el ancho y alto del `Label` en píxeles.
Ejemplo:
ancho = etiqueta.winfo_width()
alto = etiqueta.winfo_height()
print(f"Ancho: {ancho}, Alto: {alto}")
5. `after(ms, func)`:
- Ejecuta una función después de un tiempo determinado (en milisegundos). Puede ser útil para actualizar dinámicamente un `Label`.
Ejemplo:
def actualizar_texto():
etiqueta.config(text="Texto cambiado!")
etiqueta.after(2000, actualizar_texto) # Cambia el texto después de 2 segundos
6. `destroy()`:
- Elimina el `Label` de la ventana.
Ejemplo:
etiqueta.destroy()
Aquí tienes un ejemplo más completo que demuestra varias de las características mencionadas:
import tkinter as tk
# Crear la ventana principal
ventana = tk.Tk()
ventana.title("Ejemplo Completo de Label")
# Crear un Label con varias propiedades
etiqueta = tk.Label(
ventana,
text="¡Bienvenido a mi aplicación!",
bg="lightblue",
fg="darkblue",
font=("Helvetica", 16, "bold"),
padx=20,
pady=20,
relief="solid",
bd=2
)
etiqueta.pack(pady=10)
# Crear una imagen y agregarla al Label
imagen = tk.PhotoImage(file="imagen.png")
etiqueta_imagen = tk.Label(ventana, image=imagen)
etiqueta_imagen.pack(pady=10)
# Cambiar el texto del Label después de 3 segundos
def cambiar_texto():
etiqueta.config(text="Texto actualizado después de 3 segundos")
etiqueta.after(3000, cambiar_texto)
# Iniciar el bucle principal
ventana.mainloop()
Puedes conocer todo el contenido que comparto en mi perfil de LinkedIn
Puedes descargar GRATIS mi manual completo en pdf de Python Rápido