类型错误: object.__init__()只接受一个参数(要初始化的实例)。

24

我正在尝试制作一个表单应用程序,但我不理解错误:

TypeError: object.__init__() takes exactly one argument (the instance to initialize)

在这里放置代码;

class Myapp(App):
    def build(self):
        return Grid1()

class Grid1(GridLayout):
    def __init__(self,**kwargs):
        super(Grid1,self).__init__(**kwargs)
        self.cols=1

        self.inside=GridLayout()
        self.inside.cols=2

        self.inside.add_widget(Label(text="Your name is :"))
        self.name=TextInput(multiline=False)
        self.inside.add_widget(self.name)


        self.inside.add_widget(Label(text="Your Last name is :"))
        self.lastname=TextInput(multiline=False)
        self.inside.add_widget(self.lastname)


        self.inside.add_widget(Label(text="Your email is :"))
        self.email=TextInput(multiline=False)
        self.inside.add_widget(self.email)

        self.submit=Button(text="Submit",font=40)
        self.add_widget(self.submit)

if __name__=="__main__":
    Myapp().run()

错误

File ".\kivyprima.py", line 38, in <module> Myapp().run()
File "C:\Users\Alex\AppData\Local\Programs\Python\Python37\lib\site-packages\kivy\app.py", line 829, in run root = self.build()
File ".\kivyprima.py", line 10, in build return Grid1()
File ".\kivyprima.py", line 34, in init self.submit=Button(text="Submit",font=40)
File "C:\Users\Alex\AppData\Local\Programs\Python\Python37\lib\site-packages\kivy\uix\behaviors\button.py", line 121, in init

1
@OlvinRoght 不,**kwargs是完全可选的。 - DeepSpace
@AlexOnel 提供完整的堆栈跟踪。 - DeepSpace
@DeepSpace,是的,我忘记在问题末尾加上问号了。 - Olvin Roght
将完整的回溯信息添加到问题中;作为注释,它几乎无法阅读。 - chepner
请更新标题,它有误导性。 - Victor Zuanazzi
显示剩余3条评论
1个回答

16

好的,所以错误实际上在您的super(Grid1,self).__init__(**kwargs)语句中,而是在创建提交按钮时。您做了:

self.submit = Button(text="Submit", font=40)
self.add_widget(self.submit)

但是正如文档所说的那样,字体大小由font_size而不是font设置。代码应该是:

self.submit = Button(text="Submit", font_size=40)
self.add_widget(self.submit)

这应该能够正常工作。

编辑

想要感谢 @chepner 指出这一点:

请注意,问题在于字体无法被Button(或其他任何人)识别,只是一直向上传递,直到最终传递给 object.__init__ (它会引发错误而不是简单地忽略意外的参数)。


4
请注意,问题在于 font 无法被 Button(或其他任何人)识别,因此它会一直沿着链路传递,直到最终传递给 object.__init__(该函数会引发错误而不是简单地忽略未预期的参数)。 - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接