从列表框中删除所选项目

时间:2020-02-09 23:17:22

标签: python tkinter

我能够从数据库中删除项目,但仅在关闭应用程序并再次运行时显示。

def delete_command():
    backend.remove(selected[0])

def get_item(event):
    global selected
    index=lb.curselection()
    selected= lb.get(index)
    return selected

lb= Listbox(window)
lb.grid(row=4, column=0, rowspan= 5, columnspan=1)
lb.bind("<<ListboxSelect>>", get_item)

b2 = Button(window, text="Delete", command=delete_command)
b2.grid(row=5, column=2)

2 个答案:

答案 0 :(得分:1)

您似乎忘记了从列表框删除项目。

def delete_command():
    backend.remove(selected[0])
    lb.delete(index)

def get_item(event):
    global selected,index
    index=lb.curselection()
    selected= lb.get(index)
    return selected

lb= Listbox(window)
lb.grid(row=4, column=0, rowspan= 5, columnspan=1)
lb.bind("<<ListboxSelect>>", get_item)

b2 = Button(window, text="Delete", command=delete_command)
b2.grid(row=5, column=2)

我也很遗憾地说,您的代码质量很低。 除非确实有必要,否则不要全局定义变量。

答案 1 :(得分:0)

对于您的情况,无需绑定<<ListboxSelect>>即可获取所选项目。只需在delete_command()中获得所选项目:

def delete_command():
    selected = lb.curselection()
    if selected:
        backend.remove(selected[0])
        lb.delete(selected)

如果在列表框中选择一个项目时需要做其他事情,则需要绑定事件。