我希望在使用 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()
请您参考如下方法:
要获取所有选中的项目而不是最后一个,您可以使用 listbox.curselection() 然后一个一个地删除它们,从最后一个开始,以便其他的索引那些没有被删除修改。
def abc():
sel = listbox.curselection()
for index in sel[::-1]:
listbox.delete(index)
顺便说一句,我建议您为您的函数取一个有意义的名称(比如“delete”而不是“abc”)。
