5.3 KiB
5.3 KiB
Calculadora MAV - Versión PySide6 con Diseño Minimalista
🎯 Implementación Minimalista de 3 Paneles
Esta es la implementación de la Calculadora MAV usando PySide6 con diseño minimalista de 3 paneles y renderizado MathJax para ecuaciones LaTeX, manteniendo correspondencia 1:1 línea por línea entre entrada y salida.
✨ Características Principales
🔧 Interfaz Moderna
- PySide6: Framework Qt moderno y nativo
- Tema Oscuro: Diseño elegante y profesional
- Resaltado de Sintaxis: Coloreado inteligente de expresiones matemáticas
- Interfaz Responsive: Se adapta al tamaño de la ventana
🧮 Motor de Cálculo
- SymPy: Motor algebraico simbólico completo
- Evaluación Asíncrona: Cálculos en threads separados
- Tipos Personalizados: Sistema de tipos extensible
- Historial Automático: Guarda y restaura sesiones
📐 Renderizado LaTeX
- MathJax: Renderizado web profesional de ecuaciones
- Tiempo Real: Actualización automática del panel LaTeX
- Múltiples Tipos: Ecuaciones, asignaciones y expresiones simbólicas
- Interactivo: Panel redimensionable y ocultable
🚀 Instalación y Uso
Requisitos Previos
Python 3.8 o superior
Instalar Dependencias
pip install -r requirements.txt
Ejecutar la Aplicación
# Opción 1: Usar el launcher (recomendado)
python launch_pyside6.py
# Opción 2: Ejecutar directamente
python main_calc_app_pyside6.py
🎮 Guía de Uso
Interfaz Principal - 3 Paneles Minimalistas
- Panel 1 (Izquierda): Entrada de expresiones matemáticas
- Panel 2 (Centro): Resultados con correspondencia 1:1 línea por línea
- Panel 3 (Derecha): Renderizado LaTeX/MathJax de ecuaciones y comentarios (colapsable)
Atajos de Teclado
Atajo | Función |
---|---|
Ctrl+Enter |
Evaluar expresión |
Shift+Enter |
Evaluar expresión |
F12 |
Mostrar/ocultar panel LaTeX |
Ctrl+N |
Nueva sesión |
Ctrl+O |
Abrir archivo |
Ctrl+S |
Guardar archivo |
Ejemplos de Uso
# Ecuaciones básicas
x**2 + y**2 = r**2
# Resolver ecuaciones
solve(x**2 - 4, x)
# Cálculo diferencial
diff(x**3 + 2*x**2 + x, x)
# Cálculo integral
integrate(x**2, x)
# Álgebra lineal
Matrix([[1, 2], [3, 4]])
# Asignaciones
a = x**2 + 5
b = solve(a - 10, x)
🎨 Características de la Interfaz
Resaltado de Sintaxis
- Números: Color azul claro (
#89ddff
) - Funciones: Color azul (
#82aaff
) y negrita - Variables: Color verde claro (
#c3e88d
) - Operadores: Color rojo (
#ff6b6b
) y negrita - Paréntesis: Color naranja (
#f78c6c
) y negrita
Panel LaTeX
- Ecuaciones: Borde azul (
#4fc3f7
) - Asignaciones: Borde verde (
#c3e88d
) - Expresiones Simbólicas: Borde naranja (
#f78c6c
) - Hover Effects: Cambios de color al pasar el ratón
🔧 Arquitectura Técnica
Componentes Principales
HybridCalculatorPySide6 (Ventana Principal)
├── MathInputHighlighter (Resaltado de sintaxis)
├── CalculatorWorker (Evaluación asíncrona)
├── MathJaxPanel (Renderizado LaTeX)
└── PureAlgebraicEngine (Motor de cálculo)
Threading
- UI Thread: Interfaz de usuario principal
- Worker Thread: Evaluación matemática asíncrona
- Signals/Slots: Comunicación segura entre threads
WebEngine
- QWebEngineView: Para renderizado MathJax
- JavaScript Integration: Comunicación bidireccional
- HTML5: Soporte completo para MathJax 3.x
🆚 Comparación con Versión Original
Característica | Tkinter Original | PySide6 Nueva |
---|---|---|
Framework | Tkinter | PySide6/Qt |
Renderizado LaTeX | pywebview/tkinterweb | MathJax nativo |
Tema | Básico | Moderno oscuro |
Resaltado | No | Sintaxis completa |
Threading | Básico | Asíncrono avanzado |
Responsive | Limitado | Completo |
Cross-platform | Básico | Nativo Qt |
🔍 Solución de Problemas
Error: "No module named 'PySide6'"
pip install PySide6
Error: "No module named 'PySide6.QtWebEngineWidgets'"
pip install PySide6-WebEngine
Panel LaTeX no funciona
- Verificar conexión a internet (MathJax CDN)
- Comprobar que WebEngine esté instalado
- Ver logs en consola para errores JavaScript
Rendimiento lento
- Cerrar otras aplicaciones que usen Qt/WebEngine
- Reducir el número de ecuaciones en el panel LaTeX
- Verificar que no hay bucles infinitos en expresiones
🚧 Desarrollo y Contribución
Estructura del Código
main_calc_app_pyside6.py # Aplicación principal
launch_pyside6.py # Launcher con verificaciones
requirements.txt # Dependencias actualizadas
README_PYSIDE6.md # Esta documentación
Extensiones Futuras
- Autocompletado inteligente
- Gráficos integrados con matplotlib
- Exportación de ecuaciones LaTeX
- Temas personalizables
- Plugin system
- Colaboración en tiempo real
📄 Licencia
Mismo sistema de licencia que el proyecto original.
💝 Agradecimientos
- Qt/PySide6: Framework de interfaz moderna
- MathJax: Renderizado matemático profesional
- SymPy: Motor algebraico potente
- Comunidad Python: Soporte y documentación
¡Disfruta calculando con la nueva interfaz moderna! 🎉