Skip to content

🧩 Snippet: formulario con Frames + grid (CustomTkinter)

Plantilla para diseños en cuadrícula: un CTkFrame con formulario en .grid() y otro CTkFrame con botones en .pack(). Explicación de cada pieza en 05-CustomTkinter.

python
import customtkinter as ctk

ventana = ctk.CTk()
ventana.title("Formulario")
ventana.geometry("400x300")

# Frame para el formulario, ubicado con pack en la ventana
frame_formulario = ctk.CTkFrame(ventana)
frame_formulario.pack(padx=20, pady=20, fill="x")

# Dentro del frame se usa grid, sin que choque con el pack de afuera
ctk.CTkLabel(frame_formulario, text="Nombre:").grid(row=0, column=0, padx=10, pady=10, sticky="e")
ctk.CTkEntry(frame_formulario).grid(row=0, column=1, padx=10, pady=10, sticky="w")

ctk.CTkLabel(frame_formulario, text="Correo:").grid(row=1, column=0, padx=10, pady=10, sticky="e")
ctk.CTkEntry(frame_formulario).grid(row=1, column=1, padx=10, pady=10, sticky="w")

# Otro frame independiente para los botones, con pack
frame_botones = ctk.CTkFrame(ventana)
frame_botones.pack(pady=10)

ctk.CTkButton(frame_botones, text="Guardar").pack(side="left", padx=5)
ctk.CTkButton(frame_botones, text="Cancelar").pack(side="left", padx=5)

ventana.mainloop()

⚠️ Recuerda: no mezclar .pack() y .grid() en el mismo contenedor. Aquí funciona porque cada .grid()/.pack() se aplica a un CTkFrame distinto.