🚀 Proyecto Interactivo Python GUI (Monitorización y Multihilos)

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.
1. 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.

2. 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.

3. 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.

4. 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.
1. Clonar el Repositorio
Bash

git clone https://docs.github.com/es/repositories/creating-and-managing-repositories/quickstart-for-repositories
cd [nombre de tu repositorio]

2. Crear un Entorno Virtual (Recomendado)
Bash

python3 -m venv venv
source venv/bin/activate  # En Linux/macOS
# .venv\Scripts\activate  # En Windows

3. Instalar Dependencias
Bash

pip install psutil matplotlib pygame

4. 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)

5. Ejecutar el Programa
Bash

python3 Proyecto.py