首页 > 解决方案 > Kivy App:TypeError:object.__init__() 只接受一个参数(要初始化的实例)

问题描述

这个练习应用程序的代码是这样的,我已经将它与示例视频的代码进行了比较,它完全一样。这可能是什么问题?

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput


class MyGrid(GridLayout):
    def __init__(self, **kwargs):
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 2 
        self.add_widget(Label(text="Name: "))
        self.name = TextInput(multilane=False)
        self.add_widget(self.name)
        


class MyApp(App):
    def build(self):
        return MyGrid()

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

但这给我带来了这个错误:

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

指的是:

File "C:/Users/JLHI6/AppData/Local/Programs/Python/Python38-32/Scripts/Prueba Kivy.py", line 23, in <module>
     MyApp().run()
File "C:/Users/JLHI6/AppData/Local/Programs/Python/Python38-32/Scripts/Prueba Kivy.py", line 20, in build
     return MyGrid()
   File "C:/Users/JLHI6/AppData/Local/Programs/Python/Python38-32/Scripts/Prueba Kivy.py", line 13, in __init__

标签: pythonpython-3.xkivy

解决方案


这个错误意味着你传递了一个类没有预料到的参数。参数不断在super(..., self)调用中传递给超类,最终object该类引发此异常。

在这种情况下,不存在的论点是multilane=False。也许你的意思是multiline=False


推荐阅读