Python 3.x 试图更改屏幕时发生Kivy错误

Python 3.x 试图更改屏幕时发生Kivy错误,python-3.x,kivy,Python 3.x,Kivy,我不想使用.kv语言。因此,当我按下按钮试图运行函数时,就会出现问题。 我发现这些问题也有同样的问题,所以我采用了他们的代码,用于on_press方法: 错误 File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch File "kivy\_ev

我不想使用
.kv
语言。因此,当我按下按钮试图运行函数时,就会出现问题。
我发现这些问题也有同样的问题,所以我采用了他们的代码,用于on_press方法:

错误

File "kivy\_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
   File "kivy\_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
   File "kivy\_event.pyx", line 1138, in kivy._event.EventObservers._dispatch
   File "C:\Users\schup\PycharmProjects\Workspace\kivy_app_go\Surface.py", line 28, in <lambda>
     btnHvH = Button(text="Human vs Human", size_hint=(0.35, 0.15), on_release=lambda *args: self.HelperMethodsInst.switch_screen(goal_screen="go_screen", Screenmanager=WindowManager.get_ScreenManager, *args))
 TypeError: switch_screen() got multiple values for argument 'Screenmanager'
Control.py:

从kivy.uix.screenmanager导入screenmanager,屏幕
类帮助方法:
def开关屏幕(自我、屏幕管理器、目标屏幕):
屏幕管理器=目标屏幕
main.py:

从kivy_应用程序_go.Surface导入曲面
如果名称=“\uuuuu main\uuuuuuuu”:
Surface.create_Surface()
我是基维的新手。
我希望有人能帮你^ ^

你得到了

参数“Screenmanager”的多个值

错误,因为您的
lambda
正在构造一个带有关键字参数和
*args
的函数。由于位置参数必须位于关键字参数之前,因此
*args
被视为
Screenmanager=
关键字的一部分。因此,该关键字将作为

Screenmanager = WindowManager.get_ScreenManager, *args
如果需要将
按钮
实例(即
*args
传递给
开关屏幕
方法),则需要修改该方法以接受它(并调整lambda)

只需从
lambda
末尾删除
*args
即可避免错误

然而,在同一行代码中还有另一个问题。您正在使用
WindowManager.get\u ScreenManager
,但是
WindowManager
是一个类,而不是实例,并且在类文件中
get\u ScreenManager
是一个属性。因此,您需要
WindowManager
实例,可以从
App
WindowManagerInst
属性中获取该实例。因此,这一行现在变成:(以及一个调用以获取正在运行的
应用程序
):


您的
WindowManager
是一个
ScreenManager
,但您正在用您的行
self.sm=ScreenManager(transition=FadeTransition(duration=0.15))
创建另一个
ScreenManager
。尝试将该类中的
self.sm
替换为
self
。在
build
方法中,只需返回
self.WindowManagerInst
app = App.get_running_app()
btnHvH = Button(text="Human vs Human", size_hint=(0.35, 0.15), on_release=lambda *args: self.HelperMethodsInst.switch_screen(goal_screen="go_screen", Screenmanager=app.WindowManagerInst.get_ScreenManager))