Python GUI Programming

Dominando o ttk.Combobox do Tkinter: Um Guia Completo

Spread the love

O widget ttk.Combobox no Tkinter fornece uma maneira conveniente de criar menus suspensos em seus aplicativos GUI Python. Este tutorial o guiará pelas suas principais características e funcionalidades, fornecendo exemplos práticos para ajudá-lo a integrar caixas de combinação em seus projetos de forma eficaz.

Sumário:

  1. Exemplo Básico de Combobox
  2. Personalizando a Aparência: Fontes e Estilos
  3. Tratamento de Eventos e Interação com o Usuário
  4. Atualizando Dinamicamente os Valores do Combobox
  5. Criando Comboboxes Somente Leitura

1. Exemplo Básico de Combobox

Vamos começar com um exemplo simples para ilustrar a criação e o uso de um ttk.Combobox:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Exemplo de Combobox")

combo = ttk.Combobox(root, values=["Opção 1", "Opção 2", "Opção 3"])
combo.pack(pady=20)
combo.current(0)  # Define o valor padrão para "Opção 1"

root.mainloop()

Este código cria uma janela principal, adiciona uma caixa de combinação com três opções predefinidas e define a seleção padrão como “Opção 1”. Lembre-se de importar tanto tkinter quanto ttk.

2. Personalizando a Aparência: Fontes e Estilos

Você pode personalizar a aparência da caixa de combinação, como sua fonte:


import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont

root = tk.Tk()
root.title("Exemplo de Estilização de Combobox")

myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["Opção A", "Opção B", "Opção C"], font=myFont)
combo.pack(pady=20)
combo.current(0)

root.mainloop()

Este exemplo mostra como criar uma fonte personalizada e aplicá-la à caixa de combinação. Experimente diferentes famílias de fontes, tamanhos e pesos para alcançar o visual desejado.

3. Tratamento de Eventos e Interação com o Usuário

Para responder às seleções do usuário, vincule eventos à caixa de combinação. O evento <<ComboboxSelected>> é acionado quando um usuário seleciona um item:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Tratamento de Eventos de Combobox")

def combo_selected(event):
    selected_item = combo.get()
    print(f"Item selecionado: {selected_item}")

combo = ttk.Combobox(root, values=["Opção 1", "Opção 2", "Opção 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)

root.mainloop()

Este código define uma função combo_selected que imprime o item selecionado. O método bind conecta esta função ao evento <<ComboboxSelected>>.

4. Atualizando Dinamicamente os Valores do Combobox

Você pode atualizar as opções da caixa de combinação dinamicamente em tempo de execução:


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 = ["Nova Opção 1", "Nova Opção 2", "Nova Opção 3"]
    combo["values"] = new_values

button = tk.Button(root, text="Atualizar Combobox", command=update_combo)
button.pack()

root.mainloop()

Um botão aciona a função update_combo, que modifica o atributo values da caixa de combinação.

5. Criando Comboboxes Somente Leitura

Para tornar a caixa de combinação somente leitura (impedir a entrada direta de texto), use a opção state:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Combobox Somente Leitura")

combo = ttk.Combobox(root, values=["Opção 1", "Opção 2", "Opção 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)

root.mainloop()

Definir state="readonly" desativa a entrada direta de texto, permitindo apenas a seleção na lista suspensa.

Deixe um comentário

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