Saltar a contenido

Paso 7: Bucle Principal

Este es el paso final para completar la calculadora científica. Añadiremos la línea que inicia el bucle principal de Tkinter y hará que la aplicación sea completamente funcional.

📦 Código a añadir

Añade la siguiente línea al final de tu archivo calculadora.py, después de todo el código anterior:

    # Iniciar bucle principal
    ventana.mainloop()

🔍 Explicación detallada

¿Qué es mainloop()?

mainloop() es el corazón de cualquier aplicación Tkinter. Esta función:

  1. Mantiene la ventana abierta: Sin ella, la ventana aparecería y desaparecería inmediatamente
  2. Escucha eventos: Detecta clics de botones, pulsaciones de teclas, movimientos del mouse
  3. Procesa interacciones: Ejecuta las funciones asociadas a cada evento
  4. Actualiza la interfaz: Redibuja la ventana cuando es necesario
  5. Gestiona el ciclo de vida: Controla cuándo la aplicación debe cerrarse

Flujo de ejecución

Inicio del programa
Importaciones y variables globales (Paso 1)
Definición de funciones (Pasos 2-4)
Función crear_boton() (Paso 5)
if __name__ == "__main__":
Creación de ventana y widgets (Paso 5)
Creación de todos los botones (Paso 6)
ventana.mainloop() ← ¡AQUÍ COMIENZA LA MAGIA!
[La aplicación queda en espera de eventos]
Usuario hace clic en un botón
Se ejecuta la función correspondiente
[Vuelve a esperar eventos...]
Usuario cierra la ventana
Fin del programa

¿Por qué va al final?

  • Configuración completa: Todos los widgets deben estar creados ANTES de iniciar el bucle
  • Funciones definidas: Todas las funciones de los botones deben existir antes de ser referenciadas
  • Bloqueo controlado: mainloop() bloquea la ejecución hasta que se cierre la ventana

🎯 ¡Calculadora completa!

Una vez añadas esta línea, tu calculadora estará 100% funcional con todas estas características:

✅ Operaciones básicas

  • ➕ Suma, ➖ resta, ✖️ multiplicación, ➗ división
  • 🔢 Números del 0-9 y punto decimal
  • 📐 Paréntesis para agrupar operaciones

✅ Funciones científicas

  • 📐 Trigonométricas: sin, cos, tan (en grados)
  • 📊 Logarítmicas: log (base 10), ln (logaritmo natural)
  • 🔢 Especiales: √ (raíz cuadrada), x² (cuadrado), xʸ (potencia)
  • 🎲 Matemáticas: x! (factorial), % (porcentaje), exp (exponencial)
  • 🔣 Constantes: π (pi), e (euler)

✅ Sistema de memoria

  • 💾 M+: Sumar a memoria
  • M-: Restar de memoria
  • 🗑️ MC: Limpiar memoria
  • 📋 MR: Recuperar de memoria

✅ Funciones de control

  • 🧹 C: Limpiar pantalla
  • ↩️ : Borrar último carácter
  • 🟰 =: Calcular resultado

✅ Interfaz moderna

  • 🎨 Colores categorizados por función
  • 📱 Diseño responsivo con grid system
  • 🔍 Tipografía clara y legible
  • 💭 Indicador de memoria en tiempo real

🚀 Probando la calculadora

Después de añadir mainloop():

  1. Guarda el archivo calculadora.py
  2. Ejecuta desde terminal:
    python calculadora.py
    
  3. O desde VS Code: Click derecho → "Run Python File in Terminal"

Pruebas sugeridas:

  1. Operaciones básicas: 25 + 17 =42
  2. Funciones científicas: sin(30) =0.5
  3. Constantes: π * 2 =6.28...
  4. Memoria: 100M+50MR100
  5. Expresiones complejas: (10 + 5) * 2 =30

⚠️ Notas importantes

Indentación

Asegúrate de que ventana.mainloop() tenga la misma indentación que el resto del código dentro del bloque if __name__ == "__main__"::

if __name__ == "__main__":
    # Crear ventana principal
    ventana = tk.Tk()
    # ... resto del código de configuración ...

    # ¡MISMA INDENTACIÓN QUE LAS LÍNEAS ANTERIORES!
    ventana.mainloop()

Ubicación crítica

  • Correcto: Al final, después de crear todos los widgets
  • Incorrecto: Al principio, antes de crear la ventana
  • Incorrecto: En el medio, antes de crear los botones

🎉 ¡Felicitaciones!

Has completado una calculadora científica totalmente funcional con:

  • 305 líneas de código bien estructurado
  • Más de 30 botones organizados intuitivamente
  • 20+ funciones matemáticas implementadas
  • Sistema de memoria completo
  • Interfaz moderna con colores categorizados
  • Manejo robusto de errores

📁 Código final

Tu archivo calculadora.py ahora debería tener aproximadamente esta estructura:

#!/usr/bin/env python3
[Imports y variables globales - Paso 1]
[Funciones básicas - Paso 2] 
[Funciones científicas - Paso 3]
[Funciones de memoria - Paso 4]
[Función crear_boton() - Paso 5]

if __name__ == "__main__":
    [Configuración de ventana - Paso 5]
    [Creación de botones - Paso 6]
    ventana.mainloop()  # ← Paso 7

🔗 Recursos adicionales