Trujasx's picture
Upload app.py
56d2ba0 verified
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()