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

Kivy中RecycleView数据传递报错:TypeError参数缺失问题求助

问题解决:TypeError: Container.init() 缺少2个必填参数: 'source'和'mipmap'

错误原因

  1. 拼写错误:你的kv文件里把IconLeftWidget和IconRightWidget写成了IcontLeftWidget、IcontRightWidget,这会导致组件无法被正确识别。
  2. 核心问题: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:37:58