Combobox
O componente ComboBox é uma misto de uma entry com um drop-down menu. Quando o utilizador clica na seta existente no componente, abre-se o drop-down menu com uma lista de items. Ao clicar num dos items, ele é selecionado e aparece na caixa de texto. A caixa de texto permite que se escreva nela.
cmb = ttk.Combobox(parent, option=value, ...)
Atributos
Opção | Descrição |
---|---|
class_ | Nome da classe do componente. |
cursor | Cursor mostrado quando o rato está sobre o componente. |
exportselection | Por defeito qualquer texto selecionado na caixa de texto é exportado para o clipboard. Fazendo exportselection=0 evita este comportamento. |
exportselection | Por defeito qualquer texto selecionado na caixa de texto é exportado para o clipboard. Fazendo exportselection=0 evita este comportamento. |
height | Define o número máximo de linhas que aparece na área de drop-down. O valor de defeito é 20. Se houver mais linhas que o valor definido, é acrescentada uma scrollbar à área de drop-down. |
justify | Define como o texto é posicionado na caixa de texto. Pode ser: tk.LEFT para justificar à esquerda, tk.CENTER para justificar ao meio ou tk.RIGHT para justificar à direita. |
postcommand | Define uma função de callback a ser chamada quando o utilizador clica na seta. Esta função pode alterar a opção values e, se tal acontecer, a alteração é refletida na área de drop-down. |
style | Estilo usado na visualização do componente. |
takefocus | Para impedir que o componente aceite foco via teclado, fazer takefocus=False. |
textvariable | Variável StringVar que controla o texto da caixa de texto. |
validate | Pede validação dinâmica do conteúdo de texto. |
validatecommand | Define uma função de callback que, de forma dinâmica, valida o conteúdo de texto do componente. |
values | Opções que aparecem na área de drop-down, como uma sequência de strings. |
width | Largura da caixa de texto em número de carateres. Valor de defeito é 20. |
xscrollcommand | Caso o componente tenha uma scrollbar horizontal, associar esta opção ao método .set() da scrollbar. |
Métodos
Os métodos da Combobox são todos os comuns a todos os componentes ttk, mais os seguintes:
.current([index]) : Este método move o texto para a direita ou para a esquerda. Seleciona um elemento da opção values passando o índice index como argumento. Se não fornecer argumento, o método retorna o índice do elemento na caixa de texto, constante na lista em values. Se o elemento na caixa de texto não constar na lista em values, retorna -1.
index: Opcional. Índice de um elemento em values.
.set(value) : Valor a ser colocado na caixa de texto.
value: valor da lista de valores da combobox a ser selecionado.
Exemplo:
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("Tkinter - ttkCombobox")
window.geometry("300x200")
#cria a Combobox a partir do modulo ttk:
combo = ttk.Combobox(window, state="readonly")
combo.pack()
#preenche a combobox:
combo["values"] = ["Python", "C", "C++", "Java"]
#seleciona um valor:
combo.set("Python")
def showLanguage():
#obteem o valor selecionado:
lang = combo.get()
print(lang)
#obtem o indice do item selecionado:
idx = combo.current()
print(idx)
bt = Button(window, width=20, text="Ver", command=showLanguage)
bt.pack(side=BOTTOM)
window.mainloop()
