Kivy中RecycleView数据传递报错:TypeError参数缺失问题求助
问题解决:TypeError: Container.init() 缺少2个必填参数: 'source'和'mipmap'
错误原因
- 拼写错误:你的kv文件里把
IconLeftWidget和IconRightWidget写成了IcontLeftWidget、IcontRightWidget,这会导致组件无法被正确识别。 - 核心问题:
Container继承的TwoLineAvatarIconListItem是KivyMD中带头像的双行列表项组件,它的构造函数默认要求传入source(头像图片路径)和mipmap(是否启用纹理映射)两个必填参数,但你在rv.data里只传递了text,导致实例化时触发参数缺失的异常。
两种解决方案
方案一:不需要头像,改用无头像的列表项组件
如果不需要列表项带头像,直接把Container的父类换成TwoLineListItem(不带头像的双行列表项)即可:
修改main.py中的Container类:
from kivymd.uix.list import TwoLineListItem # 先导入这个类 class Container(TwoLineListItem): text = StringProperty() secondary_text = StringProperty() # 如果需要第二行文本,添加这个属性
同时修正kv文件里的拼写错误:
<Container> IconLeftWidget: icon: 'home' IconRightWidget: icon: 'home'
方案二:保留头像,传入必填参数
如果你确实需要列表项带头像,就在rv.data中补充source和mipmap参数(注意替换成你实际的图片路径):
修改Menu类的__init__方法:
def __init__(self, **kwargs): super().__init__(**kwargs) self.rv.data = [{'text': 'hello world', 'source': 'assets/avatar.png', 'mipmap': True}]
额外提示
你的RecycleBoxLayout缺少default_size设置,可能导致列表项无法正常显示,建议补充:
RecycleBoxLayout: default_size_hint: 1, None default_size: 1, dp(70) # 设置列表项高度 orientation: 'vertical' size_hint_y: None height: self.minimum_height
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

