ComboBox
O Widget ttk.Combobox combina um campo de texto com uma lista drop-down de valores. Esse widget é uma subclasse do Widget Entry. A caixa de escolha fornece ao usuário um conjunto de opções comuns para uma opção, mas, opcionalmente, permiti adicionar em sua própria escolha que não está na lista.
ListBox
O Widget Listbox é um widget Tkinter padrão usado para exibir uma lista de alternativas. A caixa de listagem só pode conter itens de texto, e todos os itens devem ter o mesmo tipo de letra e cor. Dependendo da configuração do widget, o usuário pode escolher uma ou mais alternativas a partir da lista.
Bind
Vincula métodos ou eventos a um componentes.
<<ComboboxSelected>>
Evento que ocorre quando o estado de um Combobox sofre uma mudança.
<Double-Button-1>
Evento que ocorre quando um componente sofre um duplo clique.
Exemplo:
Neste exemplo criamos um ComboBox e um ListBox que interagem entre si, usando seus respectivos eventos.
Python
#!/usr/bin/env python
# -*- coding: latin-1 -*-
# Desenvolvimento Aberto
# ComboList.py
# importa modulo
import ttk
from Tkinter import *
# Cria formulario
formulario = Tk()
formulario.title = "Desenvolvimento Aberto"
# Limpa Label
def limpa():
limpa = chr(32)
for i in range(1,18):
limpa = limpa + chr(32)
return limpa
# Evento ocorre quando muda a seleção do combo
def evento(*args):
txt = combo.get() + limpa()
tmusica = Label(formulario, text = txt)
tmusica.grid(row=1, sticky=W)
lista.selection_set(combo.current())
# Evento ocorre quando há um duplo clique na lista
def duplo_clique(*args):
txt = lista.selection_get() + limpa()
tmusica = Label(formulario, text = txt)
tmusica.grid(row=1, sticky=W)
combo.current(lista.curselection())
# Cria itens
itens = ["Satisfaction" , "Paint it Black" , "Wild Horses", "Brown Sugar",
"Sympathy for the Devil", "Start Me Up"]
# Cria Labels
titulo = Label(formulario, text ="Roling Stones:")
tmusica = Label(formulario, text = "Musica")
tlista = Label(formulario, text = "ListBox - Duplo click em uma Opcao")
tcombo = Label(formulario, text = "Combobox - Escolha uma Opcao")
# Cria um ListBox - e adicona prorpriedades e eventos
lista = Listbox(formulario)
for item in itens:
lista.insert(END,item)
lista.selection_set(0)
lista.bind("<Double-Button-1>", duplo_clique)
# Cria um ComboBox - e adicona prorpriedades e eventos
combo = ttk.Combobox(formulario)
combo["values"] = itens
combo.current(0)
combo.bind("<<ComboboxSelected>>", evento)
# Posiciona componentes na tela
titulo.grid(row=0, sticky=W)
tmusica.grid(row=1, sticky=W, pady=10)
tlista.grid(row=4, sticky=W, pady=5)
lista.grid(row=5, sticky= W)
tcombo.grid(row=6, sticky=W, pady=5)
combo.grid(row=7, sticky=W)
# Roda o loop principal do tcl
mainloop()

