【发布时间】:2021-07-11 20:28:12
【问题描述】:
我正在尝试制作一个表单应用程序,但我不明白该错误。不幸的是,我在很多方面都未能解决它:
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
代码如下:
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.graphics import Color, Rectangle
import kivy.utils
class UsersBanner(GridLayout):
def __init__(self, **kwargs):
self.rows = 1
super(UsersBanner, self).__init__(**kwargs)
with self.canvas.before:
Color(rgb=(kivy.utils.get_color_from_hex("#67697C")))
self.rect = Rectangle(size=self.size, pos=self.pos)
self.bind(pos=self.update_rect, size=self.update_rect)
# need left float layout
left = FloatLayout()
user_label = Label(text=str(kwargs['user_name']), size_hint=(1, .3), pos_hint={"top": .225, "right": 1})
left.add_widget(user_label)
# need middle float layout
middle = FloatLayout()
nationality_label = Label(text=str(kwargs['nationality']), size_hint=(1, .3), pos_hint={"top": .225, "right": .9})
middle.add_widget(nationality_label)
# need right float layout
right = FloatLayout()
user_image = Image(source="icons/users/" + kwargs['user_image'], size_hint=(1, .3),
pos_hint={"top": .225, "right": .7})
right.add_widget(user_image)
self.add_widget(left)
self.add_widget(middle)
self.add_widget(right)
def update_rect(self, *args):
self.rect.pos = self.pos
self.rect.size = self.size
错误:
File "/Users/alexisdsc/PycharmProjects/app_arabe/main.py", line 74, in <module>
MainApp().run()
File "/Users/alexisdsc/Library/Python/3.9/lib/python/site-packages/kivy/app.py", line 949, in run
self._run_prepare()
File "/Users/alexisdsc/Library/Python/3.9/lib/python/site-packages/kivy/app.py", line 944, in _run_prepare
self.dispatch('on_start')
File "_event.pyx", line 709, in kivy._event.EventDispatcher.dispatch
File "/Users/alexisdsc/PycharmProjects/app_arabe/main.py", line 62, in on_start
uu = UsersBanner(user_name=user['user_name'], nationality=user['nationality'],
File "/Users/alexisdsc/PycharmProjects/app_arabe/usersbanners.py", line 13, in __init__
super(UsersBanner, self).__init__(**kwargs)
File "/Users/alexisdsc/Library/Python/3.9/lib/python/site-packages/kivy/uix/gridlayout.py", line 279, in __init__
super(GridLayout, self).__init__(**kwargs)
File "/Users/alexisdsc/Library/Python/3.9/lib/python/site-packages/kivy/uix/layout.py", line 76, in __init__
super(Layout, self).__init__(**kwargs)
File "/Users/alexisdsc/Library/Python/3.9/lib/python/site-packages/kivy/uix/widget.py", line 350, in __init__
super(Widget, self).__init__(**kwargs)
File "_event.pyx", line 245, in kivy._event.EventDispatcher.__init__
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
【问题讨论】: