4.1 KiB
🚀 Proyecto Interactivo Python GUI (Monitorización y Multihilos)
ENLACE VIDEO DE YOUTUBE: https://youtu.be/ko-5LsNkRyY
Este proyecto es una aplicación de escritorio avanzada construida con Python y Tkinter que sirve como un dashboard interactivo para demostrar el uso de la programación Multihilo (Threading), la monitorización de recursos del sistema (psutil), la gestión de procesos externos y el web scraping en un entorno GUI modular y responsivo. ✨ Características Principales
El proyecto está organizado en un sistema de pestañas principal (T1, T2, T3...) con menús laterales contextuales que cambian según la funcionalidad activa. T1. Procesos (Monitorización de Recursos)
Esta pestaña está dedicada a la monitorización de sistemas y el manejo de archivos.
Gráficos en Tiempo Real: Muestra el uso de CPU, Memoria (RAM), Disco (I/O) y Red (Tasa de Kb/s) mediante gráficos dinámicos de matplotlib.
Gestión de Hilos: Los hilos de monitorización se inician y detienen automáticamente al entrar/salir de la subpestaña "Estado" para optimizar el rendimiento.
Editor de Texto: Incluye un editor de texto simple con funcionalidad para guardar archivos (filedialog).
Tareas Batch: Un botón dedicado a ejecutar scripts externos (backup_script.sh) en segundo plano mediante subprocess, con notificación en la barra de estado.
T2. Threads (Hilos y Simulación)
Esta pestaña ilustra el uso de hilos concurrentes para simulación y tareas en segundo plano.
-
Reloj / Alarma
Reloj Digital: Muestra la fecha y hora actualizadas en un hilo dedicado.
Alarma: Permite configurar una alarma con hora exacta. Al dispararse, reproduce un archivo de sonido (alarm.mp3) y muestra una alerta visual.
Cuenta Atrás (Feedback): Muestra el tiempo restante hasta la alarma en segundos (HH:MM:SS) en tiempo real.
-
Coches (Carrera Multihilo)
Simulación Concurrente: Una simulación de carrera donde tres "coches" (rectángulos) avanzan de forma independiente, cada uno controlado por un hilo con velocidad aleatoria.
Sincronización: Utiliza un threading.Lock para asegurar que solo el primer hilo en alcanzar la meta pueda declarar al ganador, previniendo condiciones de carrera.
-
Scraping
Web Scraping Asíncrono: Un botón que ejecuta un hilo para hacer web scraping de la página de práctica books.toscrape.com.
Extracción de Datos: Utiliza urllib.request y re para descargar la página y extraer una lista de títulos de libros.
Manejo de Errores: Incluye manejo de errores comunes de HTTP (como el 403) y errores de conexión.
-
Control de Audio
Música de Fondo: Un botón en el panel lateral para iniciar/detener la reproducción en bucle de music.mp3 utilizando pygame.mixer.
Persistencia: La música persiste (sigue sonando) aunque el usuario cambie a otras pestañas principales (T1, T3), deteniéndose solo al pulsar STOP o cerrar la aplicación.
⚙️ Tecnologías Utilizadas
Lenguaje: Python 3
GUI: Tkinter y Tkinter.ttk
Hilos: threading y threading.Lock
Monitorización: psutil (Procesos, Memoria, Red, Disco)
Visualización: matplotlib (Integrado en Tkinter)
Audio: pygame.mixer (para música y alarma)
Red/Web: urllib.request y re (para scraping)
Sistema: subprocess y os (para tareas batch)
📦 Instalación y Ejecución
Para ejecutar este proyecto, necesitarás instalar las dependencias clave.
- Clonar el Repositorio Bash
git clone https://docs.github.com/es/repositories/creating-and-managing-repositories/quickstart-for-repositories cd [nombre de tu repositorio]
- Crear un Entorno Virtual (Recomendado) Bash
python3 -m venv venv source venv/bin/activate # En Linux/macOS
.venv\Scripts\activate # En Windows
- Instalar Dependencias Bash
pip install psutil matplotlib pygame
- Requisitos de Audio y Scripts
Asegúrate de tener estos archivos en el directorio raíz del proyecto:
music.mp3 (Para música de fondo)
alarm.mp3 (Para la notificación de alarma)
backup_script.sh (El script de Bash que simula la copia de seguridad)
- Ejecutar el Programa Bash
python3 Proyecto.py