58 lines
2.4 KiB
Python
58 lines
2.4 KiB
Python
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()
|