我正在制作一个简单的Kivy/Python应用程序,它有几个屏幕。我将每个屏幕拆分为它自己的python文件,例如:
'main.py', ' homesscreen .py', 'settingsScreen.py'
在'main.py'中我有这样的:
if __name__ == '__main__':
app = myApp()
app.run()
用屏幕管理器管理/运行应用程序…例如:
class myApp(App):
def build(self):
self.screen_manager = ScreenManager()
# Home Screen
self.home_screen = homeScreen.HomeScreen()
screen = Screen(name="Home")
screen.add_widget(self.home_screen)
self.screen_manager.add_widget(screen)
# Settings Screen
self.settings_screen = settingsScreen.settingsScreen()
screen = Screen(name="Settings")
screen.add_widget(self.settings_screen)
self.screen_manager.add_widget(screen)
return self.screen_manager
问题是,我似乎不能改变屏幕从另一个。py文件
homeScreen.py:
class HomeScreen(FloatLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
# button UI code
def settingsButton(self, instance):
app.screen_manager.current = "Settings"
因为'app'是在'main.py'中定义的,所以我似乎无法访问它来更改设置屏幕。我已经尝试了以下,但我仍然无法改变'app.screen_manager。
:import main
from main import *
main.app.screen_manager.current = "Settings"
app.screen_manager.current = "Settings"
任何建议都将非常感谢。谢谢你。
您可以通过访问ScreenManager
来更改screens
,并且可以在任何地方通过使用App.get_running_app()
来完成:
App.get_running_app().screen_manager.current = 'Settings'
或:
App.get_running_app().root.current = 'Settings'