El widget OptionMenu
de Tkinter proporciona una forma simple pero efectiva de crear menús desplegables en tus aplicaciones GUI de Python. Esta guía cubre la creación de menús desplegables básicos y su mejora con funcionalidad activada por los cambios de selección del usuario.
Tabla de Contenido
Creando un Menú Desplegable Básico
La base de un menú desplegable de Tkinter es el widget ttk.OptionMenu
. Este ejemplo demuestra su implementación básica:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Menú Desplegable Básico de Tkinter")
selected_option = tk.StringVar(root)
selected_option.set("Opción 1") # Valor por defecto
options = ["Opción 1", "Opción 2", "Opción 3"]
option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)
root.mainloop()
Este código crea una ventana, inicializa una StringVar
para almacenar la opción seleccionada, define una lista de opciones y usa ttk.OptionMenu
para crear el desplegable. *options
desempaqueta la lista, proporcionando cada opción como un argumento separado a OptionMenu
. El valor seleccionado se actualiza automáticamente en selected_option
.
Respondiendo a Cambios de Selección
Para añadir interactividad, podemos ejecutar código cada vez que el usuario selecciona una opción diferente. Esto se hace usando el método trace
de la StringVar
:
import tkinter as tk
from tkinter import ttk
def option_changed(new_value):
print(f"Opción seleccionada: {new_value}")
# Añade tus acciones personalizadas aquí, ej., actualiza otros widgets,
# realiza peticiones de red, etc.
root = tk.Tk()
root.title("Menú Desplegable Interactivo de Tkinter")
selected_option = tk.StringVar(root)
selected_option.set("Opción 1")
options = ["Opción 1", "Opción 2", "Opción 3"]
option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)
selected_option.trace("w", lambda *args: option_changed(selected_option.get()))
root.mainloop()
La función option_changed
se llama cada vez que la variable selected_option
cambia. El método trace("w", ...)
registra esta función para que se llame cuando se escribe en la variable. La función lambda asegura que el valor actual se pasa a option_changed
. Reemplaza la instrucción print
con la lógica de tu aplicación.
Este enfoque crea un menú desplegable dinámico y receptivo, mejorando la interacción del usuario y la funcionalidad de la aplicación.