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()