Tkinter es la biblioteca estándar de Python para crear interfaces gráficas de usuario (GUIs). Viene incluida
con Python, por lo que no necesitas instalar nada adicional.
¿Qué es una ventana en Tkinter?
La ventana principal (o "root window") es el contenedor base de cualquier aplicación GUI en Tkinter. Todas
las demás widgets (botones, etiquetas, etc.) se colocan dentro de esta ventana.
Tip: Tkinter es multiplataforma, lo que significa que tu aplicación se verá similar en
Windows, macOS y Linux.
Creando tu primera ventana
El código más básico para crear una ventana en Tkinter es:
import tkinter as tk
# Crear la ventana principal
ventana = tk.Tk()
# Iniciar el bucle principal de la aplicación
ventana.mainloop()
Práctica:
1. Abre tu editor de Python favorito (IDLE, VS Code, PyCharm, etc.)
2. Copia el código anterior
3. Ejecútalo y observa la ventana que aparece
Lección 2: Personalizando la Ventana
Ahora que sabemos crear una ventana básica, vamos a personalizarla con título, tamaño y otros atributos.
Configurando el título de la ventana
Puedes cambiar el título de la ventana con el método title():
ventana.title("Mi Primera Ventana")
Estableciendo el tamaño de la ventana
Hay dos formas principales de establecer el tamaño:
# Tamaño mínimo (ancho x alto)
ventana.minsize(400, 300)
# Tamaño inicial (ancho x alto)
ventana.geometry("400x300")
1. Modifica el código anterior cambiando el título y el tamaño
2. Prueba qué pasa si solo usas minsize() sin geometry()
3. Intenta hacer la ventana cuadrada (mismo ancho y alto)
Lección 3: Más Opciones de Ventana
Vamos a explorar más opciones para personalizar nuestra ventana.
Cambiar el icono de la ventana
Puedes cambiar el icono que aparece en la barra de título:
# Necesitas un archivo .ico (Windows) o .png (Linux/macOS)
ventana.iconbitmap("icono.ico") # Para Windows
# O alternativamente para multiplataforma:
ventana.iconphoto(False, tk.PhotoImage(file='icono.png'))
Controlar la redimensión
Puedes controlar si la ventana puede ser redimensionada:
# Permitir redimensionar solo horizontalmente
ventana.resizable(True, False)
# No permitir redimensionar en absoluto
ventana.resizable(False, False)
Posicionar la ventana en la pantalla
Puedes especificar dónde aparece la ventana:
# Centrar la ventana en la pantalla
ancho_ventana = 500
alto_ventana = 400
Tip: El método winfo_screenwidth() y winfo_screenheight() te dan
las dimensiones de la pantalla.
Lección 4: Atributos Especiales de la Ventana
Exploremos algunos atributos especiales que pueden hacer tu ventana más profesional.
Transparencia
Puedes hacer que tu ventana sea parcialmente transparente:
# Valor entre 0.0 (invisible) y 1.0 (completamente opaco)
ventana.attributes('-alpha', 0.9) # 90% opaco
Ventana siempre encima
Puedes hacer que tu ventana permanezca sobre otras:
ventana.attributes('-topmost', True)
# Para desactivarlo más tarde:
ventana.attributes('-topmost', False)
Quitar la decoración de la ventana
Puedes crear una ventana sin bordes ni barra de título:
ventana.overrideredirect(True)
# Para volver a la normalidad:
ventana.overrideredirect(False)
Precaución: Con overrideredirect(True) no tendrás botones de
minimizar/maximizar/cerrar, necesitarás proporcionar tu propia forma de cerrar la ventana.
Práctica:
1. Crea una ventana semitransparente que siempre esté encima
2. Experimenta con diferentes valores de transparencia
3. Prueba overrideredirect y observa cómo cambia el comportamiento
Lección 5: Manejo de Eventos y Cierre
Aprenderemos a manejar el cierre de la ventana y otros eventos importantes.
Protocolo de cierre
Puedes controlar qué sucede cuando el usuario intenta cerrar la ventana:
def on_cerrar():
if messagebox.askokcancel("Salir", "¿Estás seguro de que quieres salir?"):
ventana.destroy()
ventana.protocol("WM_DELETE_WINDOW", on_cerrar)
Ejemplo completo con importación necesaria:
import tkinter as tk
from tkinter import messagebox
ventana = tk.Tk()
ventana.title("Manejo de Cierre")
ventana.geometry("400x300")
def on_cerrar():
if messagebox.askokcancel("Salir", "¿Estás seguro de que quieres salir?"):
ventana.destroy()
ventana.protocol("WM_DELETE_WINDOW", on_cerrar)
ventana.mainloop()
Eventos de teclado
Puedes vincular funciones a teclas específicas:
def cerrar_con_tecla(event):
ventana.destroy()
ventana.bind("<Escape>", cerrar_con_tecla)
Tip: Puedes vincular casi cualquier tecla o combinación de teclas. Algunos ejemplos:
"<Control-q>", "<Alt-F4>", "<F1>".
Lección 6: Ventanas Secundarias (Toplevel)
A veces necesitas más de una ventana en tu aplicación. Veamos cómo crear ventanas secundarias.
Tk() crea la ventana principal (solo debe haber una)
Toplevel() crea ventanas secundarias (puedes tener varias)
Si cierras la ventana principal (Tk()), todas las secundarias también se cierran
Controlar el enfoque
Puedes controlar qué ventana tiene el enfoque:
# Hacer que la ventana secundaria tome el enfoque
ventana_secundaria.focus_force()
# Traer la ventana al frente
ventana_secundaria.lift()
Práctica:
1. Crea una aplicación con una ventana principal y un botón que abra 3 ventanas secundarias
2. Haz que cada ventana secundaria tenga un título diferente
3. Experimenta con focus_force() y lift()
Lección 7: Temas y Estilos
Puedes cambiar la apariencia de tu ventana usando temas predefinidos.
Usando ttk para estilos modernos
El módulo ttk (themed tkinter) ofrece widgets con mejor apariencia:
from tkinter import ttk
style = ttk.Style()
# Ver los temas disponibles
print(style.theme_names())
# Establecer un tema
style.theme_use("clam") # Otros: "alt", "default", "classic", "vista", "xpnative"
Ejemplo completo con ttk:
import tkinter as tk
from tkinter import ttk
ventana = tk.Tk()
ventana.title("Ventana con Tema")
# Configurar el tema
style = ttk.Style()
style.theme_use("clam")
# Crear un botón ttk (con mejor apariencia)
boton = ttk.Button(ventana, text="Botón Moderno")
boton.pack(pady=20)
ventana.mainloop()
Personalizando colores
Puedes cambiar los colores de fondo y otros elementos:
# Cambiar color de fondo de la ventana
ventana.configure(bg="#f0f0f0")
# Configurar colores para ttk
style.configure("TButton", foreground="blue", background="white", padding=10)
Tip: Los temas disponibles dependen del sistema operativo. "clam" y "alt" suelen estar
disponibles en todas las plataformas.
Lección 8: Proyecto Final
Vamos a crear una ventana que combine todo lo aprendido en el curso.
Requisitos del proyecto:
Ventana principal con título personalizado
Tamaño inicial de 600x400 píxeles
Centrada en la pantalla
Icono personalizado (si tienes uno)
Botón para abrir ventana secundaria
Confirmación al cerrar
Uso de ttk para widgets
Tecla Escape para cerrar
Solución de ejemplo:
import tkinter as tk
from tkinter import ttk, messagebox
def main():
# Configurar ventana principal
ventana = tk.Tk()
ventana.title("Proyecto Final - Ventana Python")
1. Copia el código anterior y pruébalo
2. Personalízalo cambiando colores, tamaños o añadiendo más widgets
3. Intenta añadir una funcionalidad extra, como cambiar el tema con un botón
¡Felicidades!
Has completado el microcurso sobre creación de ventanas en Python con Tkinter. Ahora tienes las bases para
crear interfaces gráficas completas.