从列表框中删除选择,以及从提供它的列表中删除它

时间:2015-06-24 00:41:02

标签: python tkinter listbox python-3.4

如何使用以下代码从列表框中删除选择并将其从包含它的列表中删除?列表框中的选择是我存储在列表中的字典。

selection: (2,) : '{'Fecha de Entrega': '', 'Num Tel/Cel': 'test3', 'Nombre': 'test3', 'Num Orden': '3', 'Orden Creada:': ' Tuesday, June 23, 2015', 'Email': 'test3'}'

实施例: 当我在列表框中进行选择时,会返回此数据:

background-color

1 个答案:

答案 0 :(得分:3)

from tkinter import *
things = [{"dictionaryItem":"value"}, {"anotherDict":"itsValue"}, 3, "foo", ["bar", "baz"]]
root = Tk()
f = Frame(root).pack()
l = Listbox(root)
b = Button(root, text = "delete selection", command = lambda: delete(l))
b.pack()
l.pack()

for i in range(5):
    l.insert(END, things[i])

def delete(listbox):

    global things
    # Delete from Listbox
    selection = l.curselection()
    l.delete(selection[0])
    # Delete from list that provided it
    value = eval(l.get(selection[0]))
    ind = things.index(value)
    del(things[ind])
    print(things)

root.mainloop()

编辑清晰。由于listbox在这种情况下仅包含dict个对象,我只需evallistbox中提取的值,在列表对象中获取其索引,然后将其删除。

从第二条评论到print语句的所有内容都可以在一行中完成,如下所示:

del(things[things.index(eval(l.get(selection[0])))])

如果你想要有创意。