Curso Tkinter en Python
Explicaciones claras y extensas para aprender Tkinter desde cero hasta nivel medio.
1. ¿Qué es Tkinter?
Tkinter es la librería oficial de Python para crear interfaces gráficas (ventanas, botones, textos, etc.). Viene incluida con Python, por lo que no necesitas instalar nada adicional.
Tkinter funciona creando una ventana principal y añadiendo dentro de ella elementos llamados widgets. Después, un bucle llamado mainloop() mantiene la ventana abierta y responde a los eventos del usuario.
2. Tu primer programa
import tkinter as tk
ventana = tk.Tk() # Crea la ventana principal
ventana.title("Mi primera ventana") # Cambia el título
ventana.geometry("300x200") # Tamaño inicial
ventana.mainloop() # Mantiene la ventana abierta
- tk.Tk() crea la ventana principal.
- title() cambia el texto de la barra superior.
- geometry() define el tamaño.
- mainloop() mantiene la ventana abierta y escucha eventos.
3. Widgets básicos
Los widgets son los elementos visuales de Tkinter: etiquetas, botones, campos de texto, etc.
label = tk.Label(ventana, text="Hola")
label.pack()
entrada = tk.Entry(ventana)
entrada.pack()
def mostrar():
print(entrada.get())
boton = tk.Button(ventana, text="Mostrar", command=mostrar)
boton.pack()
- Label muestra texto.
- Entry permite escribir.
- Button ejecuta una función.
- get() obtiene lo que escribió el usuario.
4. Layouts
Los layouts controlan cómo se colocan los widgets dentro de la ventana.
pack()
widget.pack(pady=10)
grid()
widget.grid(row=0, column=1)
place()
widget.place(x=50, y=80)
5. Eventos
def tecla(evento):
print("Pulsaste:", evento.char)
ventana.bind("<Key>", tecla)
bind() permite detectar teclas, clics y otros eventos del usuario.
6. Tkinter con clases
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("App con clases")
tk.Label(self, text="Hola").pack()
app = App()
app.mainloop()
Usar clases es ideal para aplicaciones más grandes y organizadas.
7. Canvas (dibujar)
canvas = tk.Canvas(ventana, width=300, height=200, bg="white")
canvas.pack()
canvas.create_line(10, 10, 200, 100, fill="blue", width=3)
canvas.create_rectangle(50, 50, 150, 150, outline="red")
canvas.create_text(150, 100, text="Canvas", fill="green")
Canvas permite dibujar líneas, rectángulos, texto y más, ideal para gráficos y juegos simples.
8. Frames (agrupación)
frame = tk.Frame(ventana, bg="#eee", padx=10, pady=10)
frame.pack(pady=10)
tk.Label(frame, text="Dentro del frame").pack()
tk.Button(frame, text="Botón").pack()
Frame es un contenedor que agrupa widgets, útil para organizar la interfaz en bloques.
10. Ejemplos interactivos (simulación con JS)
Botón que cambia el texto
Texto inicial