鱼C论坛

 找回密码
 立即注册
查看: 1143|回复: 3

[已解决]listbox中如何同时删除选中的多列

[复制链接]
发表于 2022-2-18 17:05:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from tkinter import *

root = Tk()

thelb = Listbox(root,selectmode=MULTIPLE)

for i,item in enumerate(['公鸡','母鸡','小鸡','火鸡','战斗机']):
    thelb.insert(i,item)

thebutton= Button(root,text='删除',command=lambda  x = thelb:x.delete(ACTIVE))

thebutton.pack()

mainloop()

我想法是,在listbox中,通过一个按钮,同时删除我选中的不连续的多行内容。但我上面这找到的代码只能做到删除单行。

在网上找了listbox的delete方法的参数是delete(first, last=None),那上面代码中的ACTIVE又是起什么作用的?

最佳答案
2022-2-18 21:34:38
ACTIVE #当前活动状态项目(也就是说当前选中项)

curselection()
-- 返回一个元组,包含被选中的选项的序号(从 0 开始)
-- 如果没有选中任何选项,返回一个空元组

def delSelected(lb):
    while True:
        lst = lb.curselection()
        if lst:            
            lb.delete(lst[0])
        else:
            break

thebutton= Button(root,text='删除',command=lambda:delSelected(thelb) )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-18 21:34:38 | 显示全部楼层    本楼为最佳答案   
ACTIVE #当前活动状态项目(也就是说当前选中项)

curselection()
-- 返回一个元组,包含被选中的选项的序号(从 0 开始)
-- 如果没有选中任何选项,返回一个空元组

def delSelected(lb):
    while True:
        lst = lb.curselection()
        if lst:            
            lb.delete(lst[0])
        else:
            break

thebutton= Button(root,text='删除',command=lambda:delSelected(thelb) )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-18 22:06:00 | 显示全部楼层
ba21 发表于 2022-2-18 21:34
ACTIVE #当前活动状态项目(也就是说当前选中项)

curselection()

感谢指教.

还有不理解的地方想再次请教下,
Listbox.delete(first, last=None),只有两个限定起始范围的参数,1、为什么又能用上ACTIVE。2、那除了这个ACTIVE参数是不是还有其他与这相同用法的参数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-18 22:16:05 | 显示全部楼层
本帖最后由 非凡 于 2022-2-18 22:17 编辑
ba21 发表于 2022-2-18 21:34
ACTIVE #当前活动状态项目(也就是说当前选中项)

curselection()


thebutton= Button(root,text='删除',command=lambda:delSelected(thelb) )

这里为什么一定要使用lambda,当我删掉lambda的时候,按钮失效了?这是为什么?这里更匿名函数有什么关系?是不是要给函数加参数的原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表