【问题标题】:TypeError: object.__init__() takes exactly one argument (the instance to initialize)TypeError: object.__init__() 只接受一个参数(要初始化的实例)
【发布时间】:2019-12-31 12:40:55
【问题描述】:

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

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

【问题讨论】:

  • return Grid1() 这里应该传递关键字参数?
  • @OlvinR​​oght 不,**kwargs 是完全可选的
  • @AlexOnel 提供完整的堆栈跟踪
  • @DeepSpace,是的,我忘了把问号放在问题的末尾。
  • 文件 ".\kivyprima.py",第 38 行,在 Myapp().run() 文件 "C:\Users\Alex\AppData\Local\Programs\Python\Python37\ lib\site-packages\kivy\app.py”,第 829 行,运行中 root = self.build() 文件“.\kivyprima.py”,第 10 行,构建中返回 Grid1() 文件“.\kivyprima.py ",第 34 行,在 init self.submit=Button(text="Submit",font=40) 文件 "C:\Users\Alex\AppData\Local\Programs\Python\Python37\lib \site-packages\kivy\uix\behaviors\button.py",第 121 行,在 init

标签: python kivy


【解决方案1】:

好的,所以错误实际上是 not 在您的 super(Grid1,self).__init__(**kwargs) 语句中,它是在创建 Submit 按钮中。你做到了:

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

但正如docs 所说,字体大小由font_size 而非font 设置。代码应该是:

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

这应该可以正常工作。

编辑

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

请注意,问题在于该字体无法被 按钮(或其他任何人),只是简单地向上传递,直到它 最终传递给object.__init__(这会引发错误 简单地忽略意想不到的论点)。

【讨论】:

  • 请注意,问题在于 font,未被 Button(或其他任何人)识别,只是简单地向上传递,直到最终传递给 object.__init__ (这会引发错误,而不是简单地忽略意外参数)。
猜你喜欢
  • 2020-01-25
  • 1970-01-01
  • 2020-11-14
  • 2021-12-19
  • 2021-01-06
  • 2021-04-16
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
相关资源
最近更新 更多