web-dev-qa-db-ja.com

TypeError:__ init __()が予期しないキーワード引数 '__no_builder'Kivyを取得しました

コードに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/"]
_

私はkvlangファイルを使用していないので、ビルドコードは次のとおりです。

_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
''')
_

[〜#〜] edit [〜#〜]:kivyタグを追加しました

9
Max Bethke

交換:

_def __init__(self):
    super().__init__()
_

と:

_def __init__(self, **kwargs): 
    super(PlayerImage, self).__init__(**kwargs)
_

Kivyが必要とするキーワード引数を渡さずにオブジェクトのサブクラスを作成しています。

また、Kivyが__init__()を必要としているとは思いません。親から自動的に検索される可能性があると思いますが、よくわかりません。

編集:Python 3を使用しているため、Kevinがコメントで述べたように、super()のゼロ引数を使用できます。これも同様に有効です。

7
MooingRawr