如何在tkinter Python中删除列表框中的多个选定项?

1 python listbox tkinter

我希望能够在使用selectmode = MULTIPLE时删除所有选定的项目.我试图删除但它只删除最后选择的项目.有没有办法删除所有项目.

谢谢

from tkinter import *

def abc():
    listbox.delete(ACTIVE)

def xyz():
    z=listbox.get(0, END)
    print (z)

master = Tk()
scrollbar = Scrollbar(master,orient=VERTICAL)
listbox = Listbox(master, yscrollcommand=scrollbar.set, selectmode=MULTIPLE)
scrollbar.config(command=listbox.yview)
b = Button(master, text="delete", command=abc)
b.pack(side=RIGHT)
b2 = Button(master, text="save", command=xyz)
b2.pack(side=RIGHT)
scrollbar.pack(side= RIGHT, fill=Y)
listbox.pack(side=LEFT)

for item in ["one", "two", "three", "four", "five"]:
    listbox.insert(END, item)

mainloop()
Run Code Online (Sandbox Code Playgroud)

j_4*_*321 6

要获取所有选定项而不是最后一项,您可以使用listbox.curselection()然后逐个删除它们,从最后一项开始,以便删除不修改其他项的索引.

def abc():
    sel = listbox.curselection()
    for index in sel[::-1]:
        listbox.delete(index)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我建议你给你的函数赋予有意义的名字(比如"删除"而不是"abc").