Python 初始化kivy屏幕时遇到困难,TypeError:\uuuu init\uuuu()接受1个位置参数,但给出了2个

Python 初始化kivy屏幕时遇到困难,TypeError:\uuuu init\uuuu()接受1个位置参数,但给出了2个,python,kivy,Python,Kivy,如果有人能帮助我,我将不胜感激。我试图将一个kivy屏幕初始化为另一个kivy屏幕,这是我一直在努力解决的问题,我尝试了不同的方法来初始化它,并且不断收到错误代码。我想我与我的GUI的设置方式有关,但我不确定。我最新的错误代码是: TypeError:\uuuu init\uuuuuu()接受1个位置参数,但提供了2个 我一直在尝试不同的方法来初始化ApplyPage中的ProjectListScreen。请有人帮我确认一下我到底做错了什么,我会很感激的。下面是我的代码: class Proje

如果有人能帮助我,我将不胜感激。我试图将一个
kivy
屏幕初始化为另一个
kivy
屏幕,这是我一直在努力解决的问题,我尝试了不同的方法来初始化它,并且不断收到错误代码。我想我与我的
GUI
的设置方式有关,但我不确定。我最新的错误代码是:

TypeError:\uuuu init\uuuuuu()接受1个位置参数,但提供了2个

我一直在尝试不同的方法来初始化ApplyPage中的
ProjectListScreen
。请有人帮我确认一下我到底做错了什么,我会很感激的。下面是我的代码:

class ProjectListScreen(Screen):
    project_list = ObjectProperty(None)
    def __init__(self, **kwargs):
        super(ProjectListScreen, self).__init__(**kwargs)
        self.thelocalId = None
        self.placementtext = None

projectlistscreen = ProjectListScreen()

class ApplyPage(Screen):

    def __init__(self, **kwargs):
        super(ApplyPage, self).__init__(**kwargs)
        self.projectlistscreen = projectlistscreen
        self.yes = Button(text="Yes", font_size = 20, font_name= "fonts/Qanelas-Heavy.otf", background_color = (0.082, 0.549, 0.984, 1.0), background_normal= '', pos_hint = {"x":0.1,"y":0.05}, size_hint= [0.2, 0.1])
        self.add_widget(self.yes)
        self.no = Button(text="No", font_size= 20, font_name= "fonts/Qanelas-Heavy.otf", background_color = (0.082, 0.549, 0.984, 1.0), background_normal= '', pos_hint = {"x":0.7, "y":0.05}, size_hint= [0.2, 0.1])
        self.add_widget(self.no)

    def on_enter(self, *args):
        print(self.projectlistscreen.placementtext)

class MyApp(App):
    refresh_token_file = "refresh_token.txt"
    members_list = "members_list.txt"




    def build(self):
        self.refresh_token_file = self.user_data_dir + self.refresh_token_file
        self.thefirebase = MyFireBase()
        self.projectlistscreen = ProjectListScreen()
        self.apply = ApplyPage(self.projectlistscreen)



        return sm



sm = Builder.load_file("kivy.kv")

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

下面是我的全部回溯

回溯(最近一次呼叫最后一次):
文件“/Users/temitayoadefemi/PycharmProjects/test5/mainfile.py”,第871行,在
MyApp().run()
文件“/Users/temitayoadefemi/PycharmProjects/test5/venv/lib/python3.7/site packages/kivy/app.py”,第800行,正在运行
root=self.build()
文件“/Users/temitayoadefemi/PycharmProjects/test5/mainfile.py”,第860行,内部版本
self.apply=ApplyPage(self.projectlistscreen)
TypeError:init()接受1个位置参数,但给出了2个


参数
*args
和关键字参数
**kwargs
之间存在差异。 调用
self.apply=ApplyPage(self.projectlistscreen)
时,为
\uuuu init\uuuuuu
函数提供两个参数:类实例
self
self.projectlistscreen
,但该函数只需要类实例
self
+最终关键字参数

下面是一个更好理解的示例:

def myfun1(**kwargs):
    print(kwargs)

myfun1(3)
# TypeError: myfun() takes 0 positional arguments but 1 was given

def myfun2(**kwargs):
    print(kwargs)

myfun2(foobar=3)
# {'foobar': 3}

def myfun3(*args):
    print(args)

myfun3(3)
# (3,)

def myfun4(*args):
    print(args)

myfun4(foobar=3)
#TypeError: myfun() got an unexpected keyword argument 'foobar'
因此,对于您的问题,您有两种选择:

def __init__(self, *args):


参数
*args
和关键字参数
**kwargs
之间存在差异。 调用
self.apply=ApplyPage(self.projectlistscreen)
时,为
\uuuu init\uuuuuu
函数提供两个参数:类实例
self
self.projectlistscreen
,但该函数只需要类实例
self
+最终关键字参数

下面是一个更好理解的示例:

def myfun1(**kwargs):
    print(kwargs)

myfun1(3)
# TypeError: myfun() takes 0 positional arguments but 1 was given

def myfun2(**kwargs):
    print(kwargs)

myfun2(foobar=3)
# {'foobar': 3}

def myfun3(*args):
    print(args)

myfun3(3)
# (3,)

def myfun4(*args):
    print(args)

myfun4(foobar=3)
#TypeError: myfun() got an unexpected keyword argument 'foobar'
因此,对于您的问题,您有两种选择:

def __init__(self, *args):


这回答了你的问题吗@UlrichEckhardt:我认为这不是关于类实例的问题,而是关于
*args
**kwargs
之间的区别,这是否回答了您的问题@UlrichEckhardt:我认为这不是类实例
self
的问题,而是关于
*args
**kwargs
之间的区别,谢谢兄弟,但是问题太多了,所以我使用工厂进行了实例化,你有没有想过在实例化为None之后访问在另一个类中初始化的实例谢谢兄弟,但是有太多问题,所以我使用Factory实例化了,你有没有想过在实例化为None之后访问在另一个类中初始化的实例