This commit is contained in:
Santi 2025-02-18 17:00:46 +01:00
parent 27d83cc9ad
commit 7ca109af88
1 changed files with 34 additions and 29 deletions

View File

@ -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()