El widget ttk.Combobox
en Tkinter proporciona una forma conveniente de crear menús desplegables en sus aplicaciones GUI de Python. Este tutorial lo guiará a través de sus características y funcionalidades clave, proporcionando ejemplos prácticos para ayudarlo a integrar cuadros combinados en sus proyectos de manera efectiva.
Tabla de contenido:
- Ejemplo básico de Combobox
- Personalización de la apariencia: Fuentes y estilos
- Manejo de eventos e interacción del usuario
- Actualización dinámica de los valores del Combobox
- Creación de cuadros combinados de solo lectura
1. Ejemplo básico de Combobox
Comencemos con un ejemplo simple para ilustrar la creación y el uso de un ttk.Combobox
:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Ejemplo de Combobox")
combo = ttk.Combobox(root, values=["Opción 1", "Opción 2", "Opción 3"])
combo.pack(pady=20)
combo.current(0) # Establecer el valor predeterminado en "Opción 1"
root.mainloop()
Este código crea una ventana principal, agrega un cuadro combinado con tres opciones predefinidas y establece la selección predeterminada en «Opción 1». Recuerde importar tanto tkinter
como ttk
.
2. Personalización de la apariencia: Fuentes y estilos
Puede personalizar la apariencia del cuadro combinado, como su fuente:
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
root = tk.Tk()
root.title("Ejemplo de estilo de Combobox")
myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["Opción A", "Opción B", "Opción C"], font=myFont)
combo.pack(pady=20)
combo.current(0)
root.mainloop()
Este ejemplo muestra cómo crear una fuente personalizada y aplicarla al cuadro combinado. Experimente con diferentes familias de fuentes, tamaños y pesos para lograr el aspecto deseado.
3. Manejo de eventos e interacción del usuario
Para responder a las selecciones del usuario, vincule eventos al cuadro combinado. El evento <<ComboboxSelected>>
se activa cuando un usuario selecciona un elemento:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Manejo de eventos de Combobox")
def combo_selected(event):
selected_item = combo.get()
print(f"Elemento seleccionado: {selected_item}")
combo = ttk.Combobox(root, values=["Opción 1", "Opción 2", "Opción 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)
root.mainloop()
Este código define una función combo_selected
que imprime el elemento seleccionado. El método bind
conecta esta función al evento <<ComboboxSelected>>
.
4. Actualización dinámica de los valores del Combobox
Puede actualizar las opciones del cuadro combinado dinámicamente en tiempo de ejecución:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox dinámico")
combo = ttk.Combobox(root)
combo.pack(pady=20)
def update_combo():
new_values = ["Nueva opción 1", "Nueva opción 2", "Nueva opción 3"]
combo["values"] = new_values
button = tk.Button(root, text="Actualizar Combobox", command=update_combo)
button.pack()
root.mainloop()
Un botón activa la función update_combo
, que modifica el atributo values
del cuadro combinado.
5. Creación de cuadros combinados de solo lectura
Para hacer que el cuadro combinado sea de solo lectura (evitar la entrada de texto directa), use la opción state
:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Combobox de solo lectura")
combo = ttk.Combobox(root, values=["Opción 1", "Opción 2", "Opción 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)
root.mainloop()
Establecer state="readonly"
deshabilita la entrada de texto directa, permitiendo solo la selección del menú desplegable.