Guía de Acceso Rápido de Tkinter
Tkinter es la biblioteca estándar de Python para crear interfaces gráficas de usuario (GUI). Esta
guía proporciona una visión general rápida de los conceptos y elementos más importantes de
Tkinter.
1. Estructura Básica de una Aplicación Tkinter
Toda aplicación Tkinter sigue una estructura básica:
import tkinter as tk # Importar Tkinter (generalmente se importa como tk)
# 1. Crear la ventana principal
root = [Link]() # Instancia de la clase Tk, la ventana principal
# 2. Crear y configurar widgets (botones, etiquetas, entradas de texto, etc.)
etiqueta = [Link](root, text="¡Hola, Tkinter!") # Crear una etiqueta
[Link]() # Colocar la etiqueta en la ventana
boton = [Link](root, text="Haz clic", command=mi_funcion) # Crear un botón
[Link]()
# 3. Iniciar el bucle de eventos
[Link]() # Bucle principal que mantiene la ventana abierta y responde a eventos
2. Widgets Comunes
Los widgets son los elementos de la interfaz de usuario. Aquí algunos de los más usados:
● Tk(): La ventana principal de la aplicación.
● Label: Muestra texto o imágenes.
● Button: Botón para realizar acciones. El argumento command especifica la función a
llamar al hacer clic.
● Entry: Campo de entrada de texto de una sola línea.
● Text: Área de texto multilínea.
● Frame: Contenedor para otros widgets, ayuda a organizarlos.
● Canvas: Para dibujar gráficos, formas, imágenes.
● Checkbutton: Botón de verificación para opciones de sí/no.
● Radiobutton: Botón de opción para elegir una opción de un grupo.
● Listbox: Muestra una lista de opciones.
● Menu: Menú de la ventana.
● Toplevel: Crea una ventana secundaria.
● ScrolledText: Área de texto con scrollbar integrado. Importar con: from tkinter
import scrolledtext
● ttk Widgets: Versiones tematizadas de los widgets estándar que se adaptan mejor al
estilo del sistema operativo. Ejemplo: [Link], [Link], [Link]. Importar
con from tkinter import ttk.
3. Métodos de Colocación de Widgets
Los "Geometry Managers" controlan cómo se colocan los widgets dentro de sus contenedores.
● pack(): Coloca los widgets en un orden simple, uno encima o al lado del otro.
○ side: [Link], [Link], [Link], [Link] (posición).
○ fill: [Link], tk.X, tk.Y, [Link] (cómo se expande el widget).
○ expand: True o False (si el widget se expande para llenar el espacio extra).
○ padx, pady: Añade espacio alrededor del widget.
● grid(): Coloca los widgets en una cuadrícula de filas y columnas.
○ row, column: Fila y columna de la celda.
○ rowspan, columnspan: Número de filas/columnas que ocupa el widget.
○ sticky: tk.N, tk.S, tk.E, tk.W (alineación y estiramiento dentro de la celda).
Se pueden combinar, por ejemplo sticky=[Link] para pegar a la esquina
superior izquierda.
○ padx, pady: Añade espacio alrededor del widget.
● place(): Coloca los widgets en una posición absoluta dentro de su contenedor.
○ x, y: Coordenadas de la esquina superior izquierda del widget.
○ relx, rely: Posiciones relativas (0 a 1) dentro del contenedor.
○ width, height: Tamaño del widget.
○ relwidth, relheight: Tamaño relativo del widget.
4. Configuración de Widgets
La apariencia y el comportamiento de los widgets se pueden personalizar mediante opciones
(también llamadas atributos o propiedades). Se configuran al crear el widget o después con el
método config().
etiqueta = [Link](root, text="Texto", fg="blue", font=("Arial", 12)) # Al crear
[Link](text="Nuevo Texto", bg="yellow") # Después, con config()
Opciones comunes:
● text: Texto a mostrar.
● bg, background: Color de fondo.
● fg, foreground, fg: Color del texto.
● font: Fuente del texto (nombre, tamaño, estilo).
● width, height: Tamaño del widget.
● padx, pady: Espacio alrededor del contenido del widget.
● relief: Estilo del borde ([Link], [Link], [Link], etc.).
● command: Función a llamar cuando se interactúa con el widget (ej., en un Button).
● variable: Para widgets como Checkbutton y Radiobutton, asocia una variable de
Tkinter.
● value: Valor del Radiobutton.
● state: Estado del widget ([Link], [Link], [Link]).
● wrap: Para widgets Text, controla cómo se ajusta el texto ([Link], [Link],
[Link]).
5. Variables de Tkinter
Tkinter tiene sus propias clases para manejar variables, que están integradas con los widgets:
● StringVar(): Para cadenas de texto.
● IntVar(): Para enteros.
● DoubleVar(): Para números de punto flotante.
● BooleanVar(): Para valores booleanos.
Métodos importantes:
● get(): Obtiene el valor de la variable.
● set(value): Establece el valor de la variable.
Ejemplo:
mi_variable = [Link]()
entrada = [Link](root, textvariable=mi_variable) # связываает Entry и переменную
[Link]()
def obtener_valor():
print("Valor:", mi_variable.get())
boton = [Link](root, text="Obtener valor", command=obtener_valor)
[Link]()
6. Eventos y Manejadores de Eventos
Tkinter responde a eventos (clics del ratón, pulsaciones de teclas, etc.). Los manejadores de
eventos son funciones que se ejecutan cuando ocurren esos eventos.
● bind(evento, manejador): Asocia un evento a un manejador para un widget.
Ejemplo:
def hacer_algo(event):
print("Clic en el botón en las coordenadas:", event.x, event.y)
boton = [Link](root, text="Haz clic aquí")
[Link]("<Button-1>", hacer_algo) # <Button-1> es clic izquierdo del ratón
[Link]()
Eventos comunes:
● <Button-1>: Clic izquierdo del ratón. <Button-2>: Clic central. <Button-3>: Clic
derecho.
● <KeyPress-nombreTecla>: Pulsación de una tecla (ej., <KeyPress-a>,
<KeyPress-Enter>). <KeyRelease>
● "<Return>": Pulsación de la tecla Enter.
● "<Configure>": El widget cambia de tamaño.
● "<Destroy>": El widget es destruido.
7. Diálogos Comunes
Tkinter proporciona diálogos predefinidos para tareas comunes:
● messagebox: Para mostrar mensajes (informativos, de advertencia, de error, etc.).
○ showinfo(), showwarning(), showerror(), askyesno(),
askokcancel(), etc.
● filedialog: Para abrir y guardar archivos.
○ askopenfilename(), asksaveasfilename().
● colorchooser: Para elegir un color.
○ askcolor()
Ejemplo:
from tkinter import messagebox
def mostrar_mensaje():
[Link]("Título", "Este es un mensaje informativo.")
boton = [Link](root, text="Mostrar mensaje", command=mostrar_mensaje)
[Link]()
8. Layout con Grid y Pesos
Para un control más avanzado sobre el layout, especialmente al redimensionar la ventana, se
usa grid junto con columnconfigure y rowconfigure.
[Link](0, weight=1) # La columna 0 se expande
[Link](0, weight=1) # La fila 0 se expande
frame = [Link](root)
[Link](column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S)) # El frame se expande
# Los widgets dentro del frame también pueden usar grid y sticky para expandirse.
boton1 = [Link](frame, text="Botón 1")
[Link](column=0, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))
boton2 = [Link](frame, text="Botón 2")
[Link](column=1, row=0, sticky=(tk.N, tk.W, tk.E, tk.S))
[Link](0, weight=1)
[Link](1, weight=1)
[Link](0, weight=1)
Esto hace que las columnas y filas se expandan al redimensionar la ventana, y el argumento
sticky hace que los widgets se estiren para llenar el espacio disponible en sus celdas.