Spaces:
Runtime error
Runtime error
| 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() |