# 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 ```bash Python 3.8 o superior ``` ### Instalar Dependencias ```bash pip install -r requirements.txt ``` ### Ejecutar la Aplicación ```bash # 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 ```python # 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'" ```bash pip install PySide6 ``` ### Error: "No module named 'PySide6.QtWebEngineWidgets'" ```bash pip install PySide6-WebEngine ``` ### Panel LaTeX no funciona 1. Verificar conexión a internet (MathJax CDN) 2. Comprobar que WebEngine esté instalado 3. Ver logs en consola para errores JavaScript ### Rendimiento lento 1. Cerrar otras aplicaciones que usen Qt/WebEngine 2. Reducir el número de ecuaciones en el panel LaTeX 3. 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! 🎉**