我有一个自定义小部件,用于显示我的Kivy应用程序中的错误:
class ErrorWidget(Widget):
def __init__(self, **kwargs):
super(ErrorWidget, self).__init__(self, **kwargs)
with self.canvas:
Color(255/255.0, 99/255.0, 71/255.0)
Rectangle(pos=((Window.size[0] / 2)-150,(Window.size[1] / 2)+200),
size=(300,50))
...
...
class MainApp(App)
def on_start(self):
self.error_popup = ErrorWidget()
...
...
当我运行此命令时,我得到:
Traceback (most recent call last):
File "main.py", line 228, in <module>
MainApp().run()
File "/home/mark/front_end_android/venv/lib/python3.8/site-packages/kivy/app.py", line 949, in run
self._run_prepare()
File "/home/mark/front_end_android/venv/lib/python3.8/site-packages/kivy/app.py", line 944, in _run_prepare
self.dispatch('on_start')
File "kivy/_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "main.py", line 93, in on_start
self.error_popup = ErrorWidget()
File "main.py", line 50, in __init__
super(ErrorWidget, self).__init__(self)
TypeError: __init__() takes 1 positional argument but 2 were given
我怎么给它两个论点?我可以看到在on_start
方法中我没有传递任何可选参数。这个**kwargs
就在那里,以防我将来改变主意
更新:
我创建了最简单的示例,但这是有效的:
class ErrorWidget(Widget):
def __init__(self, **kwargs):
super(ErrorWidget, self).__init__(**kwargs)
with self.canvas:
Color(255/255.0, 99/255.0, 71/255.0)
Rectangle(pos=((Window.size[0] / 2)-150,(Window.size[1] / 2)+200),
size=(300,50))
class MainApp(app):
def build(self):
return ErrorWidget()
if __name__ == '__main__':
MainApp().run()
更改:
致:
调用
super
时不应包含self
参数,它是为您提供的。如果包含self
,则它将显示为一个额外参数此错误意味着
__init__
不需要您传递的位置参数self
。这是因为参数是错误的,您不需要或不想在这个调用中传递self相关问题 更多 >
编程相关推荐