import customtkinter as ctk # --- Importamos las CLASES de las páginas desde su ubicación correcta --- from gui.pages.home_page import HomePage from gui.pages.datasets_page import DatasetsPage from gui.pages.graphs_page import GraphsPage # --- Paleta de Colores --- COLOR_FONDO = "#F9F5F1" COLOR_CONTENEDOR = "#FFFFFF" COLOR_MENU_BG = "#F0F0F0" COLOR_MENU_HOVER = "#E0E0E0" COLOR_TEXTO_PRINCIPAL = "#333333" COLOR_TEXTO_SECUNDARIO = "#808080" class RobotControlUI(ctk.CTk): def __init__(self): super().__init__() self.title("Panel de Control del Robot") self.geometry("1200x800") self.configure(fg_color=COLOR_FONDO) ctk.set_appearance_mode("Light") main_container = ctk.CTkFrame(self, fg_color=COLOR_CONTENEDOR, corner_radius=25) main_container.pack(fill="both", expand=True, padx=20, pady=20) main_container.grid_columnconfigure(1, weight=1) main_container.grid_rowconfigure(0, weight=1) self.create_icon_bar(main_container) pages_container = ctk.CTkFrame(main_container, fg_color="transparent") pages_container.grid(row=0, column=1, sticky="nsew") pages_container.grid_rowconfigure(0, weight=1) pages_container.grid_columnconfigure(0, weight=1) self.pages = {} # Cargamos las clases de las páginas importadas for PageClass in (HomePage, DatasetsPage, GraphsPage): page_name = PageClass.__name__ frame = PageClass(parent=pages_container) self.pages[page_name] = frame frame.grid(row=0, column=0, sticky="nsew") self.show_page("HomePage") def create_icon_bar(self, parent): icon_bar_frame = ctk.CTkFrame(parent, fg_color=COLOR_MENU_BG, corner_radius=35) icon_bar_frame.grid(row=0, column=0, padx=(20, 10), pady=20) self.nav_buttons = {} main_icons_data = [("🏠", "HomePage"), ("🗂️", "DatasetsPage"), ("📈", "GraphsPage")] for i, (icon, page_name) in enumerate(main_icons_data): button = ctk.CTkButton(icon_bar_frame, text=icon, font=ctk.CTkFont(size=24), width=50, height=50, fg_color="transparent", hover_color=COLOR_MENU_HOVER, text_color=COLOR_TEXTO_SECUNDARIO, corner_radius=10, command=lambda p=page_name: self.show_page(p)) button.grid(row=i, column=0, pady=20, padx=10) self.nav_buttons[page_name] = button def show_page(self, page_name): page = self.pages[page_name] page.tkraise() for name, button in self.nav_buttons.items(): button.configure(text_color=COLOR_TEXTO_PRINCIPAL if name == page_name else COLOR_TEXTO_SECUNDARIO) # --- Ejecutar la aplicación --- if __name__ == "__main__": app = RobotControlUI() app.mainloop()