__Python/Kivy中的初始化参数

__Python/Kivy中的初始化参数,python,kivy,Python,Kivy,我试图调用一个init方法,它是函数中的父函数。我可能在做一些明显愚蠢的事情,但我想不出来。当我有以下代码时,我得到一个错误: from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.button import Button from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty, ListPro

我试图调用一个init方法,它是函数中的父函数。我可能在做一些明显愚蠢的事情,但我想不出来。当我有以下代码时,我得到一个错误:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty, ListProperty
from kivy.clock import Clock
from kivy.graphics import Color

class FieldCommand(Widget):
    def __init__(self, **kwargs):
        super(FieldCommand, self).__init__(**kwargs)
        self.myBoard = Board(col=2, rows=2)
        for c in range(4):
            self.add_widget(Button(text = c))

class Board(Widget):
    def __init__(self, **kwargs):
        super(Board, self).__init__(**kwargs)



class FieldCommandApp(App):
    def build(self):
        return FieldCommand()


if __name__ == '__main__':
    FieldCommandApp().run()
具体来说,我的错误是:

File "/Users/.../PycharmProjects/FieldCommand/venv/lib/python3.7/site-packages/kivy/uix/widget.py", line 350, in __init__
     super(Widget, self).__init__(**kwargs)
   File "kivy/_event.pyx", line 243, in kivy._event.EventDispatcher.__init__
 TypeError: object.__init__() takes exactly one argument (the instance to initialize
) 我是这样做的:


为什么我的应用程序出现错误?

您对
self.myBoard=Board(col=2,rows=2)
的调用包括
col
kwargs和
rows
传递给
小部件的
,后者不接受这些kwargs。因此,解决方法是在
类中提取那些
kwargs
。只需在
类中添加
属性
即可:

class Board(Widget):
    # default values for `row` and `cols`
    col = NumericProperty(1)
    rows = NumericProperty(1)

    def __init__(self, **kwargs):
        super(Board, self).__init__(**kwargs)

您对
self.myBoard=Board(col=2,rows=2)
的调用包括
kwargs
col
,这些行被传递到
小部件
\uuuu init\uuu()
,后者不接受这些kwargs。因此,解决方法是在
类中提取那些
kwargs
。只需在
类中添加
属性
即可:

class Board(Widget):
    # default values for `row` and `cols`
    col = NumericProperty(1)
    rows = NumericProperty(1)

    def __init__(self, **kwargs):
        super(Board, self).__init__(**kwargs)

谢谢-我上面的代码有几个问题-我只是觉得昨晚我已经过了疲劳期。但是你的回答肯定让我走上了正确的道路。谢谢-我上面的代码有几个问题-我只是觉得昨晚我已经过了疲劳期。但你的回答肯定让我走上了正确的道路。