import tkinter as tk from tkinter import ttk class Vista: def __init__(self, root): self.root = root self.root.title("Ventana con Botones y Frame") self.root.geometry("1280x720") self.root.configure(bg="#d3eaf2") self.crear_estilo() self.crear_frames() self.crear_botones() def crear_estilo(self): self.style = ttk.Style() self.style.configure("TButton", font=("Arial", 16), padding=10, background="#007acc", foreground="#ffffff") self.style.map("TButton", background=[("active", "#005f99")], foreground=[("active", "#ffffff")]) def crear_frames(self): self.main_frame = tk.Frame(self.root) self.main_frame.pack(fill="both", expand=True) self.menu_frame = tk.Frame(self.main_frame, width=200, background="#f0f0f0", relief="sunken", borderwidth=2) self.menu_frame.pack(side="left", fill="y") self.content_frame = tk.Frame(self.main_frame, relief="sunken", borderwidth=5, background="#ffffff") self.content_frame.pack(side="left", expand=True, fill="both", padx=20, pady=20) # Crear múltiples frames dentro del área de contenido self.frames = { "frame1": tk.Frame(self.content_frame, background="#ffdddd"), "frame2": tk.Frame(self.content_frame, background="#ddffdd"), "frame3": tk.Frame(self.content_frame, background="#ddddff"), } for frame in self.frames.values(): frame.place(relwidth=1, relheight=1) # Superponer frames def crear_botones(self): self.button_frame = ttk.Frame(self.root, padding=10) self.button_frame.pack(side="top", fill="x") self.button1 = ttk.Button(self.button_frame, text="B1", style="TButton") self.button2 = ttk.Button(self.button_frame, text="B2", style="TButton") self.button3 = ttk.Button(self.button_frame, text="B3", style="TButton") self.button1.pack(side="left", expand=True, fill="both", padx=5, pady=5) self.button2.pack(side="left", expand=True, fill="both", padx=5, pady=5) self.button3.pack(side="left", expand=True, fill="both", padx=5, pady=5) def mostrar_frame(self, frame_name): # Ocultar todos los frames for frame in self.frames.values(): frame.lower() # Mostrar el frame seleccionado self.frames[frame_name].lift()