Tkinter

 

¿Qué es Tkinter?

Tkinter es el módulo oficial de Python para crear interfaces gráficas. Permite construir:

  • Ventanas

  • Botones

  • Etiquetas

  • Entradas de texto

  • Listas

  • Cuadros de diálogo

  • Menús

  • Formularios completos

Y todo con muy pocas líneas de código.

1. Crear una ventana básica

import tkinter as tk

ventana = tk.Tk()
ventana.title("Mi primera ventana")
ventana.geometry("300x200")

ventana.mainloop()

2. Widgets básicos

Etiquetas (Label)

label = tk.Label(ventana, text="Hola Tkinter")
label.pack()

Botones (Button)

def saludar():
    print("Hola!")

boton = tk.Button(ventana, text="Saludar", command=saludar)
boton.pack()

Entradas de texto (Entry)

entrada = tk.Entry(ventana)
entrada.pack()

3. Obtener y mostrar datos

def mostrar():
    texto = entrada.get()
    label.config(text=f"Has escrito: {texto}")

entrada = tk.Entry(ventana)
entrada.pack()

boton = tk.Button(ventana, text="Mostrar", command=mostrar)
boton.pack()

label = tk.Label(ventana, text="")
label.pack()

4. Layouts: pack, grid, place

pack (simple)

label.pack()

grid (ideal para formularios)

tk.Label(ventana, text="Nombre:").grid(row=0, column=0)
tk.Entry(ventana).grid(row=0, column=1)

place (posiciones absolutas)

boton.place(x=50, y=100)

5. Cuadros de diálogo

from tkinter import messagebox

messagebox.showinfo("Información", "Operación completada")

6. Listbox (listas)

lista = tk.Listbox(ventana)
lista.pack()

lista.insert(0, "Python")
lista.insert(1, "Java")
lista.insert(2, "C++")

7. Menús

menu = tk.Menu(ventana)
ventana.config(menu=menu)

archivo = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="Archivo", menu=archivo)
archivo.add_command(label="Salir", command=ventana.quit)

ACTIVIDAD PRÁCTICA: “Gestor de tareas con Tkinter”

Objetivo: que tus alumnos creen una aplicación gráfica funcional con:

  • Entrada de texto

  • Botón para añadir tareas

  • Listbox para mostrarlas

  • Botón para eliminar tareas

  • Mensajes de confirmación

Enunciado

Crea una aplicación con Tkinter que permita:

  1. Escribir una tarea en un Entry

  2. Añadirla a una lista (Listbox)

  3. Eliminar la tarea seleccionada

  4. Mostrar mensajes de error si no hay tarea seleccionada

  5. Guardar las tareas en un archivo tareas.txt al cerrar

Solución propuesta

import tkinter as tk
from tkinter import messagebox

def añadir_tarea():
    tarea = entrada.get()
    if tarea.strip() == "":
        messagebox.showwarning("Error", "No puedes añadir una tarea vacía.")
        return
    lista.insert(tk.END, tarea)
    entrada.delete(0, tk.END)

def eliminar_tarea():
    try:
        indice = lista.curselection()[0]
        lista.delete(indice)
    except:
        messagebox.showwarning("Error", "Selecciona una tarea para eliminar.")

def guardar_tareas():
    with open("tareas.txt", "w", encoding="utf-8") as f:
        for i in range(lista.size()):
            f.write(lista.get(i) + "\n")
    ventana.quit()

ventana = tk.Tk()
ventana.title("Gestor de Tareas")
ventana.geometry("300x400")

entrada = tk.Entry(ventana)
entrada.pack(pady=10)

boton_añadir = tk.Button(ventana, text="Añadir tarea", command=añadir_tarea)
boton_añadir.pack()

lista = tk.Listbox(ventana)
lista.pack(expand=True, fill="both", padx=10, pady=10)

boton_eliminar = tk.Button(ventana, text="Eliminar tarea", command=eliminar_tarea)
boton_eliminar.pack()

boton_guardar = tk.Button(ventana, text="Guardar y salir", command=guardar_tareas)
boton_guardar.pack(pady=10)

ventana.mainloop()

Resultado esperado

  • Una ventana con un gestor de tareas funcional

  • Añadir y eliminar tareas fácilmente

  • Guardado automático al salir