Calc/README_PYSIDE6.md

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

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