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:
- Mantiene la ventana abierta: Sin ella, la ventana aparecería y desaparecería inmediatamente
- Escucha eventos: Detecta clics de botones, pulsaciones de teclas, movimientos del mouse
- Procesa interacciones: Ejecuta las funciones asociadas a cada evento
- Actualiza la interfaz: Redibuja la ventana cuando es necesario
- 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():
- Guarda el archivo
calculadora.py - Ejecuta desde terminal:
python calculadora.py - O desde VS Code: Click derecho → "Run Python File in Terminal"
Pruebas sugeridas:¶
- Operaciones básicas:
25 + 17 =→42 - Funciones científicas:
sin(30) =→0.5 - Constantes:
π * 2 =→6.28... - Memoria:
100→M+→50→MR→100 - 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¶
- 📖 Documentación de Tkinter: docs.python.org/3/library/tkinter.html
- 🧮 Módulo math: docs.python.org/3/library/math.html
- 🎨 Colores CSS: Para personalizar el diseño visual