GUI Programming

Creando Menús Desplegables Dinámicos con Tkinter

Spread the love

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

  1. Creando un Menú Desplegable Básico
  2. Respondiendo a Cambios de Selección

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *