Objetivo de aprendizaje
Desarrollar una aplicación GUI funcional utilizando Python y tkinter, integrando los widgets Label, Entry, Text y Button, para resolver problemas del contexto estudiantil ecuatoriano, mediante la experimentación directa con código, análisis crítico de resultados y la aplicación de principios de diseño de interfaces, fomentando la curiosidad técnica, la colaboración y la ética en el desarrollo de software.
Contextualización: De la consola a la interfaz humana
Imagina por un momento que necesitas crear un sistema para organizar los gastos de tu emprendimiento escolar, o quizás una aplicación para calcular tus promedios de manera visual, o incluso un pequeño programa para gestionar las tareas de tu equipo de trabajo. Hasta ahora, probablemente has interactuado con programas que muestran texto en una consola negra, pero ¿cómo dar el salto para crear aplicaciones con botones, campos de texto y etiquetas como las que usas cada día en tu celular?
La programación de interfaces gráficas no es solo cuestión de estética; es sobre humanizar la tecnología, hacerla accesible, intuitiva y cercana a quienes la utilizan. Con tkinter, la biblioteca estándar de Python para interfaces gráficas, puedes comenzar a construir puentes entre la lógica del código y la experiencia humana.
En Ecuador, donde la creatividad y el ingenio son parte de nuestra identidad, aprender a crear interfaces con tkinter te permitirá desarrollar soluciones tecnológicas que respondan a necesidades reales de tu comunidad educativa, tu barrio o tu ciudad. No se trata solo de escribir código, sino de diseñar experiencias.
Desarrollo de la actividad: Construyendo nuestro primer formulario
1. Los cuatro pilares de tkinter
En tkinter, los widgets son los componentes básicos de cualquier interfaz. Hoy trabajaremos con cuatro esenciales:
- Label: Muestra texto estático o imágenes. Es la voz de tu aplicación.
- Entry: Permite al usuario ingresar una línea de texto. Es el oído de tu aplicación.
- Text: Permite ingresar o mostrar múltiples líneas de texto. Es el cuaderno de tu aplicación.
- Button: Ejecuta una función cuando se hace clic. Es la acción de tu aplicación.
2. Nuestra primera aplicación: Calculadora de promedio
Vamos a crear una aplicación que calcule el promedio de tres notas, algo muy útil en el contexto estudiantil. Observa cuidadosamente cada parte:
import tkinter as tk
from tkinter import messagebox
# Función que se ejecutará al hacer clic en el botón
def calcular_promedio():
try:
# Obtener los valores de los campos Entry
nota1 = float(entry_nota1.get())
nota2 = float(entry_nota2.get())
nota3 = float(entry_nota3.get())
# Calcular el promedio
promedio = (nota1 + nota2 + nota3) / 3
# Mostrar el resultado en el widget Text
text_resultado.delete("1.0", tk.END)
text_resultado.insert(tk.END, f"Notas ingresadas: {nota1}, {nota2}, {nota3}\n")
text_resultado.insert(tk.END, f"Promedio calculado: {promedio:.2f}\n")
# Determinar si aprueba o no
if promedio >= 7:
text_resultado.insert(tk.END, "¡Felicidades, has aprobado! 🎉")
else:
text_resultado.insert(tk.END, "Necesitas repasar más. ¡Tú puedes! 💪")
except ValueError:
messagebox.showerror("Error", "Por favor, ingresa valores numéricos válidos")
# Crear la ventana principal
ventana = tk.Tk()
ventana.title("Calculadora de Promedio")
ventana.geometry("500x500")
ventana.configure(bg="#f0f8ff")
# Crear y colocar los widgets Label
label_titulo = tk.Label(ventana, text="Calculadora de Promedio Escolar", font=("Arial", 16, "bold"), bg="#f0f8ff")
label_titulo.pack(pady=20)
label_nota1 = tk.Label(ventana, text="Nota 1:", bg="#f0f8ff")
label_nota1.pack()
entry_nota1 = tk.Entry(ventana, width=20)
entry_nota1.pack(pady=5)
label_nota2 = tk.Label(ventana, text="Nota 2:", bg="#f0f8ff")
label_nota2.pack()
entry_nota2 = tk.Entry(ventana, width=20)
entry_nota2.pack(pady=5)
label_nota3 = tk.Label(ventana, text="Nota 3:", bg="#f0f8ff")
label_nota3.pack()
entry_nota3 = tk.Entry(ventana, width=20)
entry_nota3.pack(pady=5)
# Crear el botón para calcular
boton_calcular = tk.Button(ventana, text="Calcular Promedio", command=calcular_promedio, bg="#4CAF50", fg="white", font=("Arial", 12))
boton_calcular.pack(pady=20)
# Crear el widget Text para mostrar resultados
text_resultado = tk.Text(ventana, height=8, width=50)
text_resultado.pack(pady=10)
# Ejecutar el bucle principal de la aplicación
ventana.mainloop()
El reto final: Aplicación para emprendedores escolares
En Ecuador, el espíritu emprendedor florece desde las aulas. Tu desafío es crear una aplicación con tkinter que ayude a un estudiante emprendedor a gestionar las ventas de su pequeño negocio escolar (venta de golosinas, manualidades, etc.).
Especificaciones del reto:
La aplicación debe incluir:
- Un formulario para registrar productos (nombre, precio, cantidad en inventario)
- Un sistema para registrar ventas (producto, cantidad vendida, fecha)
- Un área que muestre el inventario actualizado después de cada venta
- Un cálculo automático de las ganancias totales
- Un botón para generar un "reporte del día" en el widget Text
Requisitos técnicos:
- Utilizar al menos 4 Labels, 3 Entries, 1 Text y 3 Buttons
- Manejar errores (por ejemplo, intentar vender más productos de los disponibles)
- Diseñar una interfaz limpia y amigable
- Incluir comentarios en el código que expliquen tu lógica
Reflexión adicional: Piensa en cómo tu aplicación podría adaptarse para emprendimientos reales de tu comunidad. ¿Qué funcionalidades adicionales serían útiles? ¿Cómo podrías hacerla más accesible para personas con diferentes niveles de alfabetización digital?
Evaluación lúdica: Demuestra lo aprendido
Responde estas 5 preguntas para verificar tu comprensión de los conceptos de tkinter. ¡Cada respuesta correcta te dará 20 puntos!