GUI Programming

Criando Menus Dropdown Dinâmicos com Tkinter

Spread the love

O widget OptionMenu do Tkinter fornece uma maneira simples, porém eficaz, de criar menus suspensos em seus aplicativos GUI Python. Este guia abrange a criação de menus suspensos básicos e sua melhoria com funcionalidades acionadas por mudanças na seleção do usuário.

Sumário

  1. Criando um Menu Suspenso Básico
  2. Respondendo a Mudanças de Seleção

Criando um Menu Suspenso Básico

A base de um menu suspenso Tkinter é o widget ttk.OptionMenu. Este exemplo demonstra sua implementação básica:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Menu Suspenso Tkinter Básico")

selected_option = tk.StringVar(root)
selected_option.set("Opção 1")  # Valor padrão

options = ["Opção 1", "Opção 2", "Opção 3"]

option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)

root.mainloop()

Este código cria uma janela, inicializa uma StringVar para armazenar a opção selecionada, define uma lista de opções e usa ttk.OptionMenu para criar o menu suspenso. *options desempacota a lista, fornecendo cada opção como um argumento separado para OptionMenu. O valor selecionado é atualizado automaticamente em selected_option.

Respondendo a Mudanças de Seleção

Para adicionar interatividade, podemos executar código sempre que o usuário seleciona uma opção diferente. Isso é feito usando o método trace da StringVar:


import tkinter as tk
from tkinter import ttk

def option_changed(new_value):
    print(f"Opção selecionada: {new_value}")
    # Adicione suas ações personalizadas aqui, por exemplo, atualize outros widgets,
    # faça solicitações de rede, etc.

root = tk.Tk()
root.title("Menu Suspenso Tkinter Interativo")

selected_option = tk.StringVar(root)
selected_option.set("Opção 1")

options = ["Opção 1", "Opção 2", "Opção 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()

A função option_changed é chamada sempre que a variável selected_option muda. O método trace("w", ...) registra esta função para ser chamada quando a variável é escrita. A função lambda garante que o valor atual seja passado para option_changed. Substitua a instrução print pela lógica do seu aplicativo.

Esta abordagem cria um menu suspenso dinâmico e responsivo, melhorando a interação do usuário e a funcionalidade do aplicativo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *