listbox中如何同时删除选中的多列
from tkinter import *root = Tk()
thelb = Listbox(root,selectmode=MULTIPLE)
for i,item in enumerate(['公鸡','母鸡','小鸡','火鸡','战斗机']):
thelb.insert(i,item)
thebutton= Button(root,text='删除',command=lambdax = thelb:x.delete(ACTIVE))
thebutton.pack()
mainloop()
我想法是,在listbox中,通过一个按钮,同时删除我选中的不连续的多行内容。但我上面这找到的代码只能做到删除单行。
在网上找了listbox的delete方法的参数是delete(first, last=None),那上面代码中的ACTIVE又是起什么作用的?
ACTIVE #当前活动状态项目(也就是说当前选中项)
curselection()
-- 返回一个元组,包含被选中的选项的序号(从 0 开始)
-- 如果没有选中任何选项,返回一个空元组
def delSelected(lb):
while True:
lst = lb.curselection()
if lst:
lb.delete(lst)
else:
break
thebutton= Button(root,text='删除',command=lambda:delSelected(thelb) ) ba21 发表于 2022-2-18 21:34
ACTIVE #当前活动状态项目(也就是说当前选中项)
curselection()
感谢指教.
还有不理解的地方想再次请教下,
Listbox.delete(first, last=None),只有两个限定起始范围的参数,1、为什么又能用上ACTIVE。2、那除了这个ACTIVE参数是不是还有其他与这相同用法的参数? 本帖最后由 非凡 于 2022-2-18 22:17 编辑
ba21 发表于 2022-2-18 21:34
ACTIVE #当前活动状态项目(也就是说当前选中项)
curselection()
thebutton= Button(root,text='删除',command=lambda:delSelected(thelb) )
这里为什么一定要使用lambda,当我删掉lambda的时候,按钮失效了?这是为什么?这里更匿名函数有什么关系?是不是要给函数加参数的原因
页:
[1]