KivyMD调用OneLineAvatarIconListItem报参数不匹配错误如何解决
KivyMD循环生成带图标按钮列表报错解决方案
报错原因
OneLineAvatarIconListItem 类的初始化方法不支持直接传入子组件作为位置参数,你直接把IconLeftWidget当参数传进去,就会触发参数数量不匹配的错误。
修复代码示例
from kivy.lang import Builder from kivymd.app import MDApp from kivymd.uix.list import IconLeftWidget, OneLineAvatarIconListItem KV = ''' ScrollView: MDList: id: list ''' class MainApp(MDApp): def build(self): return Builder.load_string(KV) def on_icon_click(self, instance): # 自定义图标按钮点击逻辑,instance为被点击的图标实例 print(f"点击了图标:{instance.icon}") def on_start(self): # 示例循环生成5个带图标按钮的列表项 for i in range(5): # 先创建列表项实例,设置展示文字 list_item = OneLineAvatarIconListItem(text=f"列表项 {i+1}") # 创建图标组件,绑定点击事件 icon_widget = IconLeftWidget(icon="github") icon_widget.bind(on_release=self.on_icon_click) # 把图标添加到列表项中 list_item.add_widget(icon_widget) # 把组装好的列表项添加到MDList容器 self.root.ids.list.add_widget(list_item) MainApp().run()
关键注意点
- 创建带图标列表项的正确顺序是:先实例化
OneLineAvatarIconListItem,再调用它的add_widget方法添加图标组件,不能直接把图标当构造参数传入 - 要把图标当按钮用,直接给
IconLeftWidget绑定on_release/on_press事件即可,事件回调里可以拿到点击的图标实例做自定义逻辑 - 循环生成的时候只要把循环变量用到文字、图标属性等位置,就能批量生成不同的列表项
内容的提问来源于stack exchange,提问作者g_man
相关产品推荐
相关产品推荐

