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