应在 KivyMD 中加载根小部件(多屏幕和分离文件)之前初始化 App 对象

App object should be initialized before loading root widget (Multiple Screens and Separated Files) in KivyMD

我在正确处理错误时遇到了问题,因为我有多个屏幕在其他 .py 文件上分开,这些文件也为它们各自的 Kivy 文件执行 Builder.load_file。我已经读过一些文件说我应该把它放在一个构建函数上 return 但这似乎不起作用并加载它们各自的 Kivy 文件。这是我的代码运行方式的示例

主要App.py

# screen imports
from lib.login import LoginScreen
from lib.signup import SignupScreen

class WindowManager(ScreenManager):
    pass

class MainApp(MDApp):
    def build(self):
        self.theme_cls.theme_style = 'Dark'
        self.theme_cls.primary_palette = 'BlueGray'

        sm = ScreenManager()
        sm.add_widget(LoginScreen(name = 'login'))
        sm.add_widget(SignupScreen(name = 'signup'))

        # load mainapp kivy
        return Builder.load_file('lib/kv/mainapp.kv') 

MainApp().run()

Login.py

class LoginScreen(Screen):
    def build(self):
    return Builder.load_file('lib/kv/login.kv') 

Signup.py

class SignupScreen(Screen):
    def build(self):
    return Builder.load_file('lib/kv/login.kv') 

除了构建方法之外,我尝试的一件事是 __init__ 方法,它使我的程序现在可以运行,但说我正在多次加载它。

我成功了!它本身已经可以工作了,我真的不必在我的每个单独的屏幕文件上放置一个构建函数。我猜,一开始我得到 App 对象错误可能是因为我在 MainApp(MDApp) class 的构建函数之外调用屏幕。我真的不知道具体发生了什么,因为我对 kivy 和 python.

还是新手