如何使用 OneLineIconListItem 向每个动态项目添加图标。我的代码给出了 TypeError: object.__init__() 没有参数
Posted
技术标签:
【中文标题】如何使用 OneLineIconListItem 向每个动态项目添加图标。我的代码给出了 TypeError: object.__init__() 没有参数【英文标题】:How can i add an icon to each dynamic item using OneLineIconListItem. My code gives TypeError: object.__init__() takes no parameters 【发布时间】:2021-06-28 07:13:03 【问题描述】:我似乎不明白这个错误,因为如果我从 OneLineIconListItem 中删除作为争论的图标,它可以工作但没有食物图标
class FoodScreen(Screen):
pass
class FoodApp(MDApp):
image = StringProperty()
meal = StringProperty()
category = StringProperty()
origin = StringProperty()
ingre = StringProperty()
source =StringProperty()
def __init__(self,**kwargs):
Window.size = (500,800)
super().__init__(**kwargs)
def on_start(self):
ingredient = self.root.ids['foods'].ids['list']
url="https://www.themealdb.com/api/json/v1/1/random.php"
respond = requests.get(url=url).json()
icons = list(md_icons.keys())
icon=icons[2193]
for i in range(1,20):
if respond['meals'][0][f'strIngredienti'] :
l= OneLineIconListItem(text=respond['meals'][0][f'strIngredienti'],icon=icon)
ingredient.add_widget(l)
FoodApp().run()
kivymd 还是新手 .kv 文件:
ScreenManager:
FoodScreen:
id:foods
name:"foods"
<FoodScreen>:
FloatLayout:
ScrollView:
pos_hint:'top':.4
size_hint:1,.5
MDList:
id:list
【问题讨论】:
【参考方案1】:经过@Xyanight 的大量搜索和提示,
首先添加:
class ListItem(OneLineIconListItem): icon = StringProperty("food")
并将on_start
方法调整为
for i in range(1,20): if respond['meals'][0][f'strIngredienti'] : l= ListItem(text=respond['meals'][0][f'strIngredienti'], icon=self.icon) ingredient.add_widget(l)
在kv文件中添加:
<ListItem>: IconLeftWidget: icon: app.icon
其中FoodApp类变量icon =StringProperty()
和局部变量self.icon = icons[2193]
【讨论】:
以上是关于如何使用 OneLineIconListItem 向每个动态项目添加图标。我的代码给出了 TypeError: object.__init__() 没有参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]