Skip to main content
 首页 » 编程设计

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

2025年05月04日15www_RR

我希望在使用 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”)。