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:
- Exemplo Básico de Combobox
- Personalizando a Aparência: Fontes e Estilos
- Tratamento de Eventos e Interação com o Usuário
- Atualizando Dinamicamente os Valores do Combobox
- 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.