Python Kivy -从另一个Python文件更改屏幕



我正在制作一个简单的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'