Python 3.x TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu__没有建筑商';基维
我试图在我的代码中添加一个Python 3.x TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu__没有建筑商';基维,python-3.x,kivy,Python 3.x,Kivy,我试图在我的代码中添加一个def\uuuu init\uuuuuu(self),当我运行kivy程序时,我得到以下信息: Traceback (most recent call last): File "/Users/acrobat/Desktop/dive/test.py", line 78, in <module> ''') File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3
def\uuuu init\uuuuuu(self)
,当我运行kivy程序时,我得到以下信息:
Traceback (most recent call last):
File "/Users/acrobat/Desktop/dive/test.py", line 78, in <module>
''')
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang.py", line 1921, in load_string
self._apply_rule(widget, parser.root, parser.root)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang.py", line 2085, in _apply_rule
self._apply_rule(child, crule, rootrule)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang.py", line 2082, in _apply_rule
child = cls(__no_builder=False)
TypeError: __init__() got an unexpected keyword argument '__no_builder'
我没有使用kv lang文件,因此以下是我的构建代码:
root = Builder.load_string('''
Widget:
Widget:
PlayerImage:
source: './rpgArt/person.zip'
allow_stretch: True
keep_ratio: True
PlayerImage2:
source: './rpgArt/personred.zip'
allow_stretch: True
keep_ratio: True
''')
编辑:添加kivy标签替换:
def __init__(self):
super().__init__()
与:
您正在创建对象的子类,而不传递Kivy所需的关键字参数
我也不认为Kivy需要\uuu init\uuu()
,我认为它可能会自动从家长那里为您查找,但我不确定
编辑:正如Kevin在评论中所说,因为您使用的是Python 3,所以可以使用
super()
的零参数,这同样有效 def\uuuuu init\uuuuuuuuuuuuu(self,**kwargs):超级(PlayerImage,self)。\uuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuurgs(**kwargs)
当你尝试它?(我的工作机器上没有Kivy,但我怀疑你的子类中没有包含**kwargs)嘿,它可以工作,但我不能接受你的评论hahathanks的帮助,如果有人要求,我确实需要你在创建时为自定义属性定义init(…)。因为我们在3.X中,不可能继续使用super的零参数形式吗?只是为了简洁起见。@Kevin没有读标记,我以为它只是Python,你又一次说对了。
def __init__(self):
super().__init__()
def __init__(self, **kwargs):
super(PlayerImage, self).__init__(**kwargs)