Calc/README_PYSIDE6.md

188 lines
5.3 KiB
Markdown

# 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! 🎉**