我试图在for循环中将TwoLineIconListItem与add_widget一起使用,但是我不知道如何添加图标。它不带Icon参数,因为每个docs IconLeftWidget都像这样嵌套:
TwoLineIconListItem:
text: "Two-line item with avatar"
secondary_text: "Secondary text here"
IconLeftWidget:
icon: "language-python"
我知道如何用KV语言执行此操作,但是如何在填充列表的python for循环中执行此操作。这是我得到的最接近的东西,但是它将图标放在文本上方
for i, z, n in zip(x[1::2], x[0::2], range(1,10)):
self.root.ids.todays_workout.add_widget(
IconLeftWidget(icon=f"numeric-{n}-box-multiple-outline"))
self.root.ids.todays_workout.add_widget(
TwoLineIconListItem(text=f"{i}", secondary_text=f"{z}"))
也许是嵌套的add_widget()
?我不确定如何完成此操作
答案 0 :(得分:0)
我认为您嵌套的add_widget()
正确无误,但是您实际上不能这样做,因为add_widget()
返回None
。因此,您可以执行以下操作:
for i, z, n in zip(x[1::2], x[0::2], range(1,10)):
icon = IconLeftWidget(icon=f"numeric-{n}-box-multiple-outline"))
listItem = TwoLineIconListItem(text=f"{i}", secondary_text=f"{z}"))
listItem.add_widget(icon)
self.root.ids.todays_workout.add_widget(listItem)
答案 1 :(得分:0)
再看看文档,并从KivyMD支持Discord Channel获得一些帮助,我找到了解决方案。
您需要创建一个从TwoLineIconListItem继承的新类,如下所示:
taskkill /F /FI "IMAGENAME eq nginx.exe"
然后我创建了一个名为listwithicon.kv的新.kv文件,其内容如下(注意类名匹配)
class ListWithIcon(TwoLineIconListItem):
icon = StringProperty("string")
最后,在我的主要KV字符串(或文件)中添加了<ListWithIcon>:
IconLeftWidget:
icon: root.icon
这些步骤将使您可以向函数添加#: include listwithicon.kv
参数。只需确保通过icon
(您的新课程)而不是KivyMD课程ListWithIcon
TwoLineIconListItem