我正在尝试为我的代码添加def __init__(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'
这是代码:
def __init__(self)
位于PlayerImage
类中,这是我试图在屏幕上移动的小部件
class PlayerImage(Image):
angle = NumericProperty(0)
def __init__(self):
super().__init__()
def on_touch_down(self, touch):
# self.currentstate = self.states["person.zip/"]
Animation.cancel_all(self)
angle = degrees(atan2(touch.y - self.center_y,
touch.x - self.center_x))
Animation(center=touch.pos, angle=angle).start(self)
# self.currentstate = self.states["personred/rest.png/"]
我没有使用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标签
答案 0 :(得分:7)
替换:
def __init__(self):
super().__init__()
使用:
def __init__(self, **kwargs):
super(PlayerImage, self).__init__(**kwargs)
您正在创建对象的子类,而不传递Kivy所需的关键字参数。
我也不认为Kivy需要__init__()
,我认为它可能会从父母那里自动查找,但我不确定。
编辑:就像Kevin在评论中所说,因为你使用的是Python 3,你可以使用super()
的零参数,这些参数同样有效。