Как получить информацию из выделенных объектов и отправить их на второй список?
Напишите программу, состоящую из двух списков Listbox. В первом будет, например, перечень товаров, заданный программно. Второй изначально пуст, пусть это будет перечень покупок. При клике на одну кнопку товар должен переходить из одного списка в другой. При клике на вторую кнопку – возвращаться (человек передумал покупать). Предусмотрите возможность множественного выбора элементов списка и их перемещения.
У меня не получилось добавить действие к кнопкам.
from tkinter import *
from tkinter.ttk import *
def toSecond():
selectToSecond = list(lbox1.curselection())
selectToSecond.reverse()
lbox2.insert(END, selectToSecond.get())
for i in select:
lbox1.delete(i)
def toFirst():
selectToFirst = list(lbox2.curselection())
selectToFirst.reverse()
lbox1.insert(END, selectToFirst.get())
for i in select:
lbox2.delete(i)
root = Tk()
lbox1 = Listbox(selectmode=EXTENDED)
for i in ('pineapple','potato','meat','butter','bread','carrot','bananas','apple'):
lbox1.insert(0,i)
lbox1.pack(side=LEFT)
lbox2 = Listbox(selectmode=EXTENDED)
lbox2.pack(side=RIGHT)
f = Frame()
f.pack(side=LEFT, padx=10)
Button(f, text=">>>", command=toSecond).pack(fill=X)
Button(f, text="<<<", command=toFirst).pack(fill=X)
root.mainloop()
Ответы (1 шт):
selectToSecond, selectToFirst - это списки индексов выделенных элементов, т.е. просто списки чисел. У списков нет метода get, который вы пытаетесь от них вызвать, и из списка чисел нельзя просто каким-то магическим способом получить выделенные в Listbox элементы. Нужно по этим индексам пройти циклом, по каждому индексу из Listbox получать сам выделенный элемент, его уже добавлять в другой Listbox:
def toSecond():
selectToSecond = lbox1.curselection()
for i in selectToSecond:
lbox2.insert(END, lbox1.get(i))
for i in reversed(selectToSecond):
lbox1.delete(i)
def toFirst():
selectToFirst = lbox2.curselection()
for i in selectToFirst:
lbox1.insert(END, lbox2.get(i))
for i in reversed(selectToFirst):
lbox2.delete(i)
