問題描述
我正在嘗試制作一個表單應用程序,但我不明白錯誤:
I am trying to make a form app and I don t understand the error:
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:UsersAlexAppDataLocalProgramsPythonPython37libsite-packageskivyapp.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:UsersAlexAppDataLocalProgramsPythonPython37libsite-packageskivyuixehaviorsutton.py", line 121, in init
推薦答案
好的,所以錯誤實際上是 not 在你的 super(Grid1,self).__init__(**kwargs)
語句,它在 Submit 按鈕的創建中.你做到了:
OK, so the error is actually not in your super(Grid1,self).__init__(**kwargs)
statement, it's in the creation of the Submit button. You did:
self.submit = Button(text="Submit", font=40)
self.add_widget(self.submit)
但正如 docs 所說,字體大小是由 font_size
而不是 font
設置.代碼應該是:
But as the docs say, the font size is set by font_size
and not font
. The code should be:
self.submit = Button(text="Submit", font_size=40)
self.add_widget(self.submit)
這應該可以正常工作.
只想感謝@chepner 指出這一點:
Just want to thank @chepner for pointing this out:
請注意,問題在于該字體無法被按鈕(或其他任何人),只是簡單地向上傳遞,直到它最終傳遞給 object.__init__
(這會引發錯誤簡單地忽略意想不到的論點).
Note that the issue, then, is that font, not being recognized by Button (or anyone else), is simply passed on up the chain until it is ultimately passed to
object.__init__
(which raises an error instead of simply ignoring unexpected arguments).
這篇關于TypeError: object.__init__() 只接受一個參數(要初始化的實例)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!