Calc/launch_pyside6.py

89 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""
Launcher para Calculadora MAV - Versión PySide6 con MathJax
"""
import sys
import os
import subprocess
from pathlib import Path
import importlib.util
import logging
def check_dependencies():
"""Verifica que todas las dependencias estén instaladas"""
required_modules = [
'PySide6',
'sympy',
'numpy',
'matplotlib'
]
missing = []
for module in required_modules:
try:
__import__(module)
except ImportError:
missing.append(module)
if missing:
print("❌ Faltan las siguientes dependencias:")
for module in missing:
print(f" - {module}")
print("\n💡 Para instalar las dependencias, ejecuta:")
print(" pip install -r requirements.txt")
return False
print("✅ Todas las dependencias están instaladas")
return True
def check_pyside6_webengine():
"""Verifica si PySide6 WebEngine está disponible"""
try:
from PySide6.QtWebEngineWidgets import QWebEngineView
print("✅ PySide6 WebEngine disponible para MathJax")
return True
except ImportError:
print("⚠️ PySide6 WebEngine no disponible")
print(" Instalando QtWebEngine...")
try:
subprocess.run([sys.executable, '-m', 'pip', 'install', 'PySide6-WebEngine'],
check=True, capture_output=True)
print("✅ PySide6 WebEngine instalado correctamente")
return True
except subprocess.CalledProcessError:
print("❌ No se pudo instalar PySide6 WebEngine")
return False
def main():
"""Función principal del launcher"""
print("🚀 Iniciando Calculadora MAV - Diseño Minimalista 3 Paneles")
print("=" * 60)
# Verificar dependencias
if not check_dependencies():
sys.exit(1)
# Verificar WebEngine
if not check_pyside6_webengine():
print("⚠️ Continuando sin WebEngine (funcionalidad limitada)")
print("\n🎯 Iniciando aplicación...")
try:
# Importar y ejecutar la aplicación
from main_calc_app_pyside6 import main as run_app
run_app()
except ImportError as e:
print(f"❌ Error de importación: {e}")
print(" Verifica que todos los archivos del proyecto estén presentes")
sys.exit(1)
except Exception as e:
print(f"❌ Error inesperado: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
if __name__ == "__main__":
main()