diff --git a/app/main.py b/app/main.py index 168c276..33f9dae 100644 --- a/app/main.py +++ b/app/main.py @@ -4,50 +4,55 @@ import datetime from tkinter import Menu, ttk # Importación de widgets personalizados -from hilos.ChatWidget import ChatWidget -from hilos.MusicPlayer import MusicPlayer -from hilos.WeatherWidget import WeatherWidget -from hilos.SystemMonitor import SystemMonitor -from hilos.ApplicationLauncher import ApplicationLauncher -from hilos.LanguageChart import LanguageChart +from hilos.ChatWidget import ChatWidget # Widget de chat en tiempo real +from hilos.MusicPlayer import MusicPlayer # Reproductor de música +from hilos.WeatherWidget import WeatherWidget # Widget del clima con API de OpenWeather +from hilos.SystemMonitor import SystemMonitor # Monitor del sistema (CPU, RAM, etc.) +from hilos.ApplicationLauncher import ApplicationLauncher # Lanzador de aplicaciones +from hilos.LanguageChart import LanguageChart # Gráfico de lenguajes de programación # Crear la ventana principal root = tk.Tk() -root.title("Ventana Responsive") -root.geometry("1000x700") # Tamaño inicial +root.title("Ventana Responsive") # Título de la ventana +root.geometry("1000x700") # Definir el tamaño inicial de la ventana -# Crear el menú superior +# Crear el menú superior de la aplicación (actualmente vacío) menu_bar = Menu(root) root.config(menu=menu_bar) -# Frames laterales y central -frame_izquierdo = tk.Frame(root, bg="lightblue", width=150) -frame_central = tk.Frame(root, bg="white") -frame_derecho = tk.Frame(root, bg="lightgreen", width=150) +# Crear los frames (paneles) laterales y central +frame_izquierdo = tk.Frame(root, bg="lightblue", width=150) # Panel lateral izquierdo +frame_central = tk.Frame(root, bg="white") # Panel central principal +frame_derecho = tk.Frame(root, bg="lightgreen", width=150) # Panel lateral derecho -frame_izquierdo.grid(row=0, column=0, sticky="ns") -frame_central.grid(row=0, column=1, sticky="nsew") -frame_derecho.grid(row=0, column=2, sticky="ns") +# Ubicar los frames en la cuadrícula de la ventana +frame_izquierdo.grid(row=0, column=0, sticky="ns") # Se extiende en dirección norte-sur +frame_central.grid(row=0, column=1, sticky="nsew") # Se expande en ambas direcciones +frame_derecho.grid(row=0, column=2, sticky="ns") # Se extiende en dirección norte-sur # Añadir widgets a los paneles -weather_widget = WeatherWidget(frame_izquierdo, "API_KEY") -app_launcher = ApplicationLauncher(frame_izquierdo) -language_chart = LanguageChart(frame_izquierdo) -chat_widget = ChatWidget(frame_derecho) -music_player = MusicPlayer(frame_derecho) +weather_widget = WeatherWidget(frame_izquierdo, "API_KEY") # Widget del clima en el panel izquierdo +app_launcher = ApplicationLauncher(frame_izquierdo) # Lanzador de aplicaciones en el panel izquierdo +language_chart = LanguageChart(frame_izquierdo) # Gráfico de lenguajes de programación en el panel izquierdo +chat_widget = ChatWidget(frame_derecho) # Chat en vivo en el panel derecho +music_player = MusicPlayer(frame_derecho) # Reproductor de música en el panel derecho -# Barra de estado +# Crear la barra de estado en la parte inferior de la ventana barra_estado = tk.Label(root, text="Barra de estado", bg="lightgray", anchor="w") -barra_estado.grid(row=1, column=0, columnspan=3, sticky="ew") +barra_estado.grid(row=1, column=0, columnspan=3, sticky="ew") # Se extiende horizontalmente -# Inicializar el monitor del sistema -stop_event = threading.Event() -system_monitor = SystemMonitor(barra_estado, stop_event) +# Inicializar el monitor del sistema para mostrar uso de CPU, RAM, etc. +stop_event = threading.Event() # Evento para detener el monitor al cerrar la app +system_monitor = SystemMonitor(barra_estado, stop_event) # Monitoriza el sistema y actualiza la barra de estado -# Manejar el cierre de la aplicación +# Función para manejar el cierre de la aplicación def on_closing(): - stop_event.set() - root.destroy() + """Se ejecuta al cerrar la ventana, deteniendo los procesos activos.""" + stop_event.set() # Detiene el monitor del sistema + root.destroy() # Cierra la ventana principal +# Asignar la función de cierre cuando el usuario intenta cerrar la ventana root.protocol("WM_DELETE_WINDOW", on_closing) + +# Iniciar el bucle principal de la aplicación root.mainloop()