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

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()

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

Entrada de texto simulada