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() self.crear_menu_lateral() self.crear_terminal() 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) 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) 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 crear_menu_lateral(self): self.url_label = tk.Label(self.menu_frame, text="Ingrese URL:", background="#f0f0f0") self.url_label.pack(pady=(10, 5)) self.url_entry = tk.Entry(self.menu_frame, width=25) self.url_entry.pack(pady=(0, 10), padx=10) self.boton_seguir = ttk.Button(self.menu_frame, text="Seguir", command=self.accion_seguir) self.boton_seguir.pack(pady=5, padx=10, fill="x") self.boton_parar = ttk.Button(self.menu_frame, text="Parar", command=self.accion_parar) self.boton_parar.pack(pady=5, padx=10, fill="x") def crear_terminal(self): self.terminal_frame = tk.Frame(self.root, height=200, background="#1e1e1e", relief="ridge", borderwidth=3) self.terminal_frame.pack(side="bottom", fill="x", padx=10, pady=10) self.terminal_text = tk.Text(self.terminal_frame, height=10, bg="#1e1e1e", fg="#00FF00", insertbackground="white", font=("Courier", 12), wrap="word", borderwidth=0) self.terminal_text.pack(fill="both", expand=True, padx=10, pady=10) self.terminal_text.insert("end", "Terminal iniciada...\n") self.terminal_text.config(state="disabled") def accion_seguir(self): url = self.url_entry.get() self.agregar_a_terminal(f"Seguir con la URL: {url}") def accion_parar(self): self.agregar_a_terminal("Acción de parar ejecutada") def agregar_a_terminal(self, texto): self.terminal_text.config(state="normal") self.terminal_text.insert("end", texto + "\n") self.terminal_text.config(state="disabled") self.terminal_text.see("end") def mostrar_frame(self, frame_name): for frame in self.frames.values(): frame.lower() self.frames[frame_name].lift()