Listbox
lst = tk.Listbox(parent, opção, ...)
A Listbox é um componente que mostra um conjunto de linhas de texto das quais se pode selecionar uma ou mais.
Atributos
Opção | Descrição |
---|---|
activestyle | Pode ter um dos seguintes valores:’underline’: a linha ativa está sublinhada. É o valor de defeito. ‘dotbox’: a linha ativa está envolta em linhas ponteadas nos 4 lados. ‘none’: a linha ativa não tem uma aparência especial. |
bd ou borderwidth | Espessura do bordo à volta da lista. Valor de defeito: 2 pixeis. |
bg ou background | Cor de fundo. |
cursor | Nome do cursor a ser mostrado quando o rato está sobre a lista. |
disabledforeground | Cor de texto usado quando a lista estiver desabilitado. |
exportselection | Por defeito, qualquer seleção do texto de uma lista é automáticamente exportada para o clipboard. Para evitar esta exportação, fazer exportselection=0. |
font | Fonte do texto. |
fg ou foreground | Cor de texto. |
height | Número de linhas mostradas na lista. Valor de defeito é 10. |
highlightbackground | Cor do foco quando a lista nao tem o foco. |
highlightcolor | Cor do foco quando a lista tem o foco. |
highlightthickness | Espessura do foco. |
listvariable | É uma instância de StringVar que contém toda a lista de elementos da lista.O método .get() dessa instância retorna uma string com o formato “(‘e0’, ‘e1’, …)”, onde e representa cada uma das linhas da lista. Para mudar todas as linhas da lista, deve-se usar o método .set(str) onde str é uma string contendo todos elementos da lista, separados por espaço. |
relief | Efeito de relevo da lista. Valor de defeito: tk.SUNKED. |
selectbackground | Cor de fundo escolhida para texto selecionado. |
selectborderwidth | Espessura do rebordo à volta do texto selecionado. |
selectforeground | Cor do texto selecionado. |
selectmode | Determina quantos items da lista podem ser selecionados. tk.BROWSE: pode selecionar uma linha da lista. è o valo de defeito. Se selecionar uma linha e arrastar para outra linha a seleção segue o rato.tk.SINGLE: pode selecionar uma linha mas não a pode arrastar. tk.MULTIPLE: pode selecionar múltiplas linhas. tk.EXTENDED: pode selecionar qualquer grupo adjacente de linhas clicando na primeira linha e arrastando até à última. |
state | Por defeito a lista está no estado tk.NORMAL. Para tornar a lista irresponsível a eventos do rato, pôr esta opção a tk.DISABLED. |
takefocus | Se igual a zero a lista não receberá o foco a partir do teclado. |
width | Largura da lista em carateres. Defeito é 20. |
xscrollcommand | Liga a lista a uma barra de rolamento (scrollbar) horizontal através do método .set() da barra de rolamento. |
yscrollcommand | Liga a lista a uma barra de rolamento (scrollbar) vertical através do método .set() da barra de rolamento. |
Métodos
.activate(indice) : ativa a linha no índice indice.
.bbox(indice) : retorna a caixa delimitadora da linha especificada por indice como um tuplo de 4 elementos (xoffset, yoffset, w, h) onde o pixel superioresquerdo é (xoffset, yoffset) e a largura w e altura h são dadas em pixeis
.curselection() : retorna um tuple com os números das linhas selecionadas, a começar em 0.
.delete(first, last=None) : elimina as linhas no intervalo [first, last], inclusive. Se o argumento last fôr omitido, elimina a linha com o número first.
.get(first, last=None) : retorna um tuple com o texto das linhas de first a last, inclusive. Se o argumento last fôr omitido, retorna o texto da linha com o número first.
.index(i) : posiciona a parte visivel da lista de forma a que a linha com o número i esteja no topo.
.insert(indice, *elementos) : insere uma ou mais linhas antes da linha especificada por indice. Usar tk.END para inserir as linhas no fim da lista.
itemconfig(index, option=value, …) : muda a configuração da linha com o índice indice. Opções válidas são:
background cor de fundo da linha.
foreground cor de texto da linha.
selectbackground cor de fundo da linha quando fôr selecionada.
selectforeground cor de texto da linha quando fôr selecionada.
.see(indice) : ajusta a posição da lista para que a linha com o indice seja visível.
.selection_clear(first, last=None) : deseleciona todas as linhas entre first e last inclusive. Se last fôr omitido deseleciona a linha com o indice first.
.selection_includes(indice) : retorna 1 se a linha com o índice indice estiver selecionada, senão retorna 0.
.selection_set(first, last=None) : seleciona todas as linhas entre first e last, inclusive. Se last fôr omitido seleciona a linha com o indice first.
.size() : retorna o número de linhas da lista.
Exemplo 1:
Exemplo com listvariable:
from tkinter import * from tkinter import messagebox window = Tk() window.title("Tkinter - Listbox")#tuplo com nomes de animais:
animais = ("Cão", "Gato", "Papagaio", "Iguana")#variável de controle da listbox:
lv = StringVar(value=animais) listBox = Listbox(window, selectmode=SINGLE, listvariable=lv) listBox.pack(fill=Y) def verAnimal():#indice da seleção:
idx = listBox.curselection()[0]#item selecionado:
animal = listBox.get(idx) messagebox.showinfo("Linguagem", animal) bt = Button(window, text="Ver", command=verAnimal) bt.pack(side=BOTTOM) window.mainloop()
Saída:

Exemplo 2:
from tkinter import *
from tkinter import messagebox
#lista de linguagens:
list = ['Python', 'C', 'Java', 'PHP', 'Javascript', 'Visual Basic', 'C#',
'Ada', 'Prolog', 'Actionscript', 'Lisp']
window = Tk()
Label(window, text="Linguagens:").pack(anchor=N)
#frame que irá conter a listbox:
listFrame = Frame(window)
listFrame.pack(side=TOP, padx=5, pady=5)
#scrollbar:
scrollBar = Scrollbar(listFrame)
scrollBar.pack(side=RIGHT, fill=Y)
#listbox:
listBox = Listbox(listFrame, selectmode=SINGLE)
listBox.pack(side=LEFT, fill=Y)
#ligar a scrollbar à listbox:
scrollBar.config(command=listBox.yview)
listBox.config(yscrollcommand=scrollBar.set)
#ordenação da lista de linguagens:
list.sort()
#preenchimento da listbox:
for item in list:
listBox.insert(END, item)
#função de callback do botão:
def verLinguagem():
#obtem item selecionado da listbox
idx = listBox.curselection()[0]
language = list[int(idx)]
messagebox.showinfo("Linguagem", language)
bt = Button(window, text="Ver", command=verLinguagem)
bt.pack(side=BOTTOM)
window.mainloop()
Saída:
