You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy/KivyMD开发中TwoLineAvatarIconListItem子控件无法删除问题求助

问题根源

KivyMD的TwoLineAvatarIconListItem属于封装好的复合列表组件,内部预留了专门的属性管理左右两侧图标控件,你直接调用组件顶层的add_widget()方法,并不会把组件添加到官方预设的图标容器中,也不会被组件内部的逻辑登记,所以会出现你说的「找不到子控件、无法删除」的问题。

正确操作方式

添加左侧图标

不要使用add_widget,直接给列表项的left_widget属性赋值即可,系统会自动把图标放到正确的位置,并且内部登记该控件:

# 原来的错误写法
# self.media_list_item.add_widget(self.left_icon_widget)
# 修正后的写法
self.media_list_item.left_widget = self.left_icon_widget

如果是右侧图标,对应赋值给right_widget属性即可。

删除左侧图标

不需要手动遍历children再调用remove_widget,直接把left_widget属性设为None,系统会自动移除对应的图标控件:

# 原来的错误写法
# self.media_list_item.remove_widget(self.left_icon_widget)
# 修正后的写法
self.media_list_item.left_widget = None

补充说明

如果需要一次添加多个左侧图标,可以操作列表项的_left_widgets列表属性,添加完成后调用self.media_list_item.do_layout()刷新布局即可,删除同理直接操作_left_widgets列表后刷新布局。

内容的提问来源于stack exchange,提问作者campervancoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:30:00