File size: 2,949 Bytes
56d2ba0
2f7d2e9
56d2ba0
 
 
 
2f7d2e9
56d2ba0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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()