|
||
---|---|---|
src | ||
README.md |
README.md
MultiApp
MultiApp es una aplicación de escritorio desarrollada en Python que combina múltiples funcionalidades en una sola interfaz gráfica. Utiliza la biblioteca customtkinter
para la creación de la interfaz de usuario y está diseñada para ser modular, integrando diferentes servicios y herramientas como un monitor del sistema, un juego de Tetris, un gestor de procesos, y un scrapper web.
Características principales
- Interfaz gráfica moderna: Construida con
customtkinter
para una experiencia de usuario mejorada. - Scrapping web: Permite extraer enlaces de páginas web y almacenarlos en una base de datos.
- Monitor del sistema: Muestra métricas en tiempo real como uso de CPU, RAM y red.
- Juego de Tetris: Incluye un juego de Tetris completamente funcional.
- Gestión de procesos: Abre programas, archivos o URLs directamente desde la aplicación.
- Gestión de hilos: Maneja múltiples tareas concurrentes de manera eficiente.
Estructura del proyecto
El proyecto está organizado en diferentes módulos y clases, cada uno con una responsabilidad específica. A continuación, se describen las clases principales y sus funcionalidades.
1. CenteredWindow
(ubicada en src/ui/centered_window.py
)
Esta es la clase principal de la aplicación que gestiona la interfaz gráfica y la interacción del usuario.
- Responsabilidades:
- Configurar la ventana principal y centrarla en la pantalla.
- Crear paneles (izquierdo, derecho, central y barra inferior) para organizar las funcionalidades.
- Manejar el inicio y cierre de la aplicación.
- Integrar los diferentes componentes como el monitor del sistema, el scrapper y el juego de Tetris.
2. ThreadsManager
(ubicada en src/services/threads_manager.py
)
Gestiona los hilos de ejecución para las diferentes tareas de la aplicación.
- Responsabilidades:
- Iniciar y detener hilos para tareas como actualización de tiempo, temperatura, correos, monitor del sistema y el juego de Tetris.
- Coordinar la ejecución de tareas concurrentes.
- Proveer métodos para actualizar métricas del sistema, tiempo, temperatura y correos.
3. ThreadenTask
(ubicada en src/services/threaden_task.py
)
Clase auxiliar para manejar hilos individuales.
- Responsabilidades:
- Iniciar y detener hilos de manera segura.
- Garantizar que los hilos se ejecuten en segundo plano como demonios.
4. ProcessManager
(ubicada en src/services/processes_manager.py
)
Permite abrir programas, archivos o URLs desde la aplicación.
- Responsabilidades:
- Abrir recursos como navegadores web, programas o archivos.
- Manejar errores y proporcionar mensajes de fallback en caso de fallos.
5. Scrapper
(ubicada en src/services/scrapper.py
)
Clase encargada de realizar el scrapping web y almacenar los enlaces encontrados en una base de datos.
- Responsabilidades:
- Extraer enlaces de páginas web utilizando
BeautifulSoup
. - Almacenar los enlaces en una base de datos MySQL.
- Actualizar la interfaz de usuario con los enlaces encontrados.
- Manejar múltiples tareas de scrapping de manera concurrente.
- Extraer enlaces de páginas web utilizando
6. SystemMonitor
(ubicada en src/services/system_monitor.py
)
Monitorea métricas del sistema en tiempo real y las muestra en gráficos.
- Responsabilidades:
- Obtener métricas como uso de CPU, RAM y red utilizando
psutil
. - Mostrar gráficos en tiempo real utilizando
matplotlib
. - Actualizar los gráficos dinámicamente con nuevos datos.
- Obtener métricas como uso de CPU, RAM y red utilizando
7. TetrisGame
(ubicada en src/services/tetris_game.py
)
Implementa un juego de Tetris completamente funcional dentro de la aplicación.
- Responsabilidades:
- Gestionar la lógica del juego, incluyendo movimiento, rotación y colocación de piezas.
- Detectar líneas completas y actualizarlas.
- Manejar eventos de teclado para controlar el juego.
Requisitos del sistema
- Python 3.8 o superior.
- Bibliotecas necesarias (instalables con
pip
):customtkinter
psutil
matplotlib
requests
beautifulsoup4
mysql-connector-python
Instalación
- Clona este repositorio:
bash
git clone https://github.com/DennisEckerskorn/MultiAppRepo.git
cd MultiAppRepo
- Instala las dependencias:
bash
pip install -r requirements.txt
-
Configura la base de datos MySQL:
- Crea una base de datos llamada
scrap_links_db
. - Asegúrate de que las credenciales en
Scrapper
coincidan con tu configuración.
- Crea una base de datos llamada
-
Ejecuta la aplicación:
bash
python src/main.py
Uso
-
Scrapping:
- Introduce una URL en el panel izquierdo y haz clic en "Iniciar Scrapping".
- Los enlaces encontrados se mostrarán en la pestaña "Scrapping".
-
Monitor del sistema:
- Ve a la pestaña "Sistema" para ver gráficos en tiempo real de CPU, RAM y red.
-
Juego de Tetris:
- Ve a la pestaña "Juego" y haz clic en "Start Game" para comenzar a jugar.
-
Gestión de procesos:
- Usa los botones del panel izquierdo para abrir programas o URLs.
Enlace al video de demostración:
Por subir aún...
Autor
Desarrollado por Dennis Eckerskorn.