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