Выкладываю второй вариант. Для настоящих мужчин :) С точки зрения дизайна пользовательского интерфейса - более правильный (и единственно возможный, если количество вариантов выбора больше 8 - я уже об этом писал).
# -*- coding: utf-8 -*-
import Tkinter
root = Tkinter.Tk()
root.geometry("500x200+100+100")
choise = [u"Первый показатель",
u"Второй показатель",
u"Третий показатель",
u"Четвертый показатель"]
result = []
# Реакция на получение фокуса...
def focus_in(event):
listbox_work = event.widget
if listbox_work.size != 0:
listbox_work.activate(0)
listbox_work.selection_set(0)
def change_choise(event):
# Выбор вариантов из всех возможных и запись их в список result
# паралельно выбранные варианты удаляются из списка choise
if event.widget.master.cget("text") == u"Все варианты" and choise:
selection = int(event.widget.curselection()[0])
result.append(choise[selection])
Listbox_fr.delete(selection)
Listbox_to.insert("end", choise.pop(selection))
print repr(result).decode("unicode_escape")
# Отказ от выбранных вариантом и удаление их из списка result
# паралельно удаленные варианты добавляются в список choise
elif event.widget.master.cget("text") == u"Выбранные варианты" and result:
selection = int(event.widget.curselection()[0])
choise.append(result[selection])
Listbox_to.delete(selection)
Listbox_fr.insert("end", result.pop(selection))
print repr(result).decode("unicode_escape")
# Список всех вариантов на выбор
Frame_fr = Tkinter.LabelFrame(root, text=u"Все варианты", font=14)
Frame_fr.place(relx=0.25, rely=0.5, anchor="center")
Listbox_fr = Tkinter.Listbox(Frame_fr, width=20, height=4, font=14)
Listbox_fr.insert("end",*choise)
Listbox_fr.focus_force()
Listbox_fr.pack()
Listbox_fr.bind("<space>", change_choise)
Listbox_fr.bind("<FocusIn>", focus_in)
# Список выбранных вариантов
Frame_to = Tkinter.LabelFrame(root, text=u"Выбранные варианты", font=14)
Frame_to.place(relx=0.75, rely=0.5, anchor="center")
Listbox_to = Tkinter.Listbox(Frame_to, width=20, height=4, font=14)
Listbox_to.pack()
Listbox_to.bind("<space>", change_choise)
Listbox_to.bind("<FocusIn>", focus_in)
root.mainloop()
P.S. Скролы и все другие “няшечки” рекомендуется прилепить самостоятельно…