python - Python kivymd TypeError: __init__() 接受 1 个位置参数,但给出了 2 个
问题描述
我花了相当多的时间试图解决这个问题,我的实际目标是运行一个 forloop 以在 kivymd 中生成一个列表,而这样做我得到了这个错误?
TypeError: __init__() takes 1 positional argument but 2 were given
这是我简化的代码
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import *
KV = '''
ScrollView:
MDList:
id: list
'''
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
ib = IconLeftWidget(icon='github')
ibn = OneLineAvatarIconListItem(
IconLeftWidget(icon='github')
)
self.root.ids.list.add_widget(ib)
MainApp().run()
需要通过 forloop 生成列表并将图标用作按钮
OneLineAvatarIconListItem( IconLeftWidget(icon='github') )
# error line 我知道问题是你只能为函数传递一个参数,但是有一个正确的方法!请帮助TT
解决方案
我不知道它是否可以在一行中完成,但这对我有用
#ibn = OneLineAvatarIconListItem(text='Hello')
ibn = OneLineAvatarIconListItem()
ibn.add_widget(IconLeftWidget(icon='plus'))
ibn.add_widget(IconRightWidget(icon='minus'))
self.root.ids.list.add_widget(ibn)
您可以创建自己的小部件以使其更简单
class MyItem(OneLineAvatarIconListItem):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_widget(IconLeftWidget(icon='plus'))
self.add_widget(IconRightWidget(icon='minus'))
# ... code ...
#my_item = MyItem(text='World')
my_item = MyItem()
self.root.ids.list.add_widget(my_item)
最少的工作代码
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import *
KV = '''
ScrollView:
MDList:
id: list
'''
class MyItem(OneLineAvatarIconListItem):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_widget(IconLeftWidget(icon='plus'))
self.add_widget(IconRightWidget(icon='minus'))
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
ib = IconLeftWidget(icon='github')
self.root.ids.list.add_widget(ib)
ibn = OneLineAvatarIconListItem(text="Hello", bg_color="lime")
ibn.add_widget(IconLeftWidget(icon='plus'))
ibn.add_widget(IconRightWidget(icon='minus'))
self.root.ids.list.add_widget(ibn)
my_item = MyItem(text="World", bg_color="red")
self.root.ids.list.add_widget(my_item)
MainApp().run()
推荐阅读
- php - Composer 总是遇到“已用尽 1610612736 字节的允许内存大小” - 在服务器和本地
- binary-tree - 计算二叉树递归方法的高度
- azure - 自托管无头代码空间
- javascript - 如何做一个简单的计算器
- python - 函数内列表的某些更新被传播,而另一些则没有,为什么?
- asp.net-core - ServiceStack 将后端的 HttpError.Unauthorized 转换为客户端上的 ArgumentNullException(“值不能为空。(参数 'RefreshToken')”)
- python - 将数据附加到标签(Chart.js 和 Django 3)
- c# - Blazor Web 应用 SetString 引发异常错误消息“对象引用未设置为对象的实例。”
- java - 当我从翻转的 textureRegion 创建它时,LibGDX 无法使用 NinePatchDrawable 作为表格的背景
- java - Android SmsManager.sendTextMessage 失败且没有错误