应在 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.
还是新手
我在正确处理错误时遇到了问题,因为我有多个屏幕在其他 .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.
还是新手