Python Tkinter

Guía Completa de Personalización en Tkinter


1️⃣   Ventana Principal

La ventana principal es el contenedor donde estarán todos los widgets de la aplicación. Se puede personalizar el tamaño, color, título, icono y comportamiento.

import tkinter as tk

 

ventana = tk.Tk()

ventana.title("Encuesta de Bebidas")      # Título de la ventana

ventana.geometry("500x400")               # Tamaño de la ventana (ancho x alto)

ventana.resizable(False, False)           # Evitar que la ventana se redimensione

ventana.configure(bg="#f0f8ff")           # Color de fondo

ventana.iconbitmap("icono.ico")           # Icono personalizado (opcional)

ventana.attributes("-topmost", True)      # Mantener ventana encima de otras

Opciones adicionales:

  • ventana.state("zoomed") → Abrir ventana maximizada.
  • ventana.attributes("-alpha", 0.9) → Transparencia de la ventana.

2️⃣   Etiquetas (Label)

Las etiquetas se usan para mostrar texto o información estática en la ventana. Se pueden personalizar fuentes, colores, bordes y posición.

label = tk.Label(ventana,

                 text="Selecciona tu bebida:",

                 font=("Arial", 14, "bold"),   # Fuente, tamaño y estilo

                 fg="#333333",                  # Color del texto

                 bg="#f0f8ff",                  # Color de fondo

                 relief="raised",               # Estilo de borde

                 bd=3)                          # Grosor del borde

label.pack(pady=10)                        # Separación vertical

Opciones:

  • anchor → Posición del texto dentro de la etiqueta (w, e, center).
  • justify → Para texto multilínea (left, right, center).

3️⃣   Botones (Button)

Permiten que el usuario ejecute una acción al presionarlos.

btn = tk.Button(ventana,

                text="Mostrar Selección",

                font=("Comic Sans MS", 12, "bold"),

                fg="white",

                bg="#4CAF50",

                activebackground="#45a049",

                activeforeground="yellow",

                relief="groove",

                bd=4,

                padx=10,

                pady=5,

                command=lambda: print("¡Click!"))

btn.pack(pady=15)

Opciones:

  • state="disabled" → deshabilitar botón.
  • image=imagen → colocar un icono o imagen en el botón.
  • width y height → tamaño en caracteres.

4️⃣   Cuadros de texto (Entry)

Se usan para que los usuarios ingresen información.

entry = tk.Entry(ventana,

                 font=("Arial", 12),

                 bg="#ffffff",

                 fg="#000000",

                 bd=3,

                 relief="sunken",

                 justify="center",   # Centrar el texto

                 width=30)

entry.pack(pady=5)

Opciones:

  • show="*" → para contraseñas.
  • state="readonly" → solo lectura.
  • highlightcolor, highlightbackground → borde de enfoque personalizado.

5️⃣   Radiobutton

Se utiliza para seleccionar una opción dentro de un grupo.

bebida_var = tk.StringVar()

tk.Radiobutton(ventana, text="Café", variable=bebida_var, value="Café",

               font=("Arial", 12),

               bg="#f0f8ff",

               fg="#000000",

               selectcolor="#ffcccc").pack(anchor="w")

tk.Radiobutton(ventana, text="Té", variable=bebida_var, value="Té",

               font=("Arial", 12),

               bg="#f0f8ff",

               fg="#000000",

               selectcolor="#ffcccc").pack(anchor="w")

Opciones:

  • selectcolor → color del círculo cuando está seleccionado.
  • indicatoron → cambia entre círculo o botón.

6️⃣   Checkbutton

Permite seleccionar una o varias opciones de manera independiente.

azucar_var = tk.IntVar()

tk.Checkbutton(ventana, text="Azúcar", variable=azucar_var,

               font=("Arial", 12),

               bg="#f0f8ff",

               fg="#000000",

               selectcolor="#ffff99",

               relief="ridge",

               bd=2,

               padx=5,

               pady=5).pack(anchor="w")

Opciones:

  • onvalue / offvalue → valor que toma la variable si está activado o no.
  • indicatoron → cambia el estilo del checkbox.

7️⃣   Listbox

Permite mostrar listas de elementos seleccionables.

listbox = tk.Listbox(ventana, font=("Arial", 12), bg="#ffffff", fg="#333333",

                     selectbackground="#4CAF50", selectforeground="white",

                     width=40, height=6, bd=3, relief="sunken")

listbox.pack(pady=10)

listbox.insert(tk.END, "Café")

listbox.insert(tk.END, "Té")

listbox.insert(tk.END, "Chocolate")

Opciones:

  • selectmode="single" o "multiple" → selección simple o múltiple.
  • exportselection=False → evitar que pierda la selección al cambiar de widget.

8️⃣   Posicionamiento de Widgets

Tkinter tiene 3 formas de posicionar widgets:

  1. pack() → simple, apila vertical u horizontal.
    • side="left/right/top/bottom", fill, expand.
  2. grid() → organiza en filas y columnas.

3.  label.grid(row=0, column=0, padx=10, pady=5)

4.  entry.grid(row=0, column=1, padx=10, pady=5)

    • sticky → alinear dentro de la celda (w, e, n, s).
  1. place() → posición absoluta o relativa.

6.  btn.place(x=50, y=100, width=100, height=30)


9️⃣   Colores y Fuentes

  • Colores: "red" o "#ff0000".
  • Fuentes: font=("Arial", 12, "bold").
  • Bordes: relief="flat/raised/sunken/groove/ridge".
  • Tamaño: width, height, padx, pady.

🔟 Extras y Mejoras

  • Frames → secciones dentro de la ventana:

·         frame = tk.Frame(root, bg="#eeeeee", bd=2, relief="ridge")

·         frame.pack(padx=10, pady=10, fill="both", expand=True)

  • Imágenes en widgets: Label(image=img) o Button(image=img).
  • Tooltips → usando librerías externas para mostrar información al pasar el mouse.
  • Cambiar estado de widgets: disabled, readonly.
  • Animaciones simples: usando after() para actualizar widgets cada cierto tiempo.


Comentarios