我如何引用我创建的 kivy 应用 class 实例?
How do I refer back to a kivy app class instance I have created?
from screen_selections import NameSelection
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager
class ScreenManagerApp(App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.stage = {}
def build(self):
sm = ScreenManager()
sm.add_widget(NameSelection(name='name_selection'))
return sm
def write_to_console(self,input):
print(input)
if __name__ == '__main__':
ScreenManagerApp().run()
以上是我使用 Kivy 的主要 class。我之前问了一个很长的问题,但我希望这个问题更具体。
根据我在这里所做的,我直接在底部创建了一个 ScreenManagerApp 的实例并使用它的 运行 方法,这是 App parent class 中的一个方法。
我希望能够在我的代码中的任何地方,轻松地引用回这个应用程序实例(所以在本例中是 ScreenManagerApp()),因为我需要在这里存储可以在整个过程中引用的变量代码,但建议不要将它们创建为全局变量,这是更好的做法?
我知道我可能需要明确命名我的实例:
smApp = ScreenManagerApp()
smApp.run()
但我还是想不出访问我创建的这个新实例的最佳方式。
@JohnAnderson 在评论中回答,但我想结束这个问题。
App called get_running_app()中有一个静态方法,您可以在代码的任何地方使用它,它会返回到创建的实例。
我已经对此进行了测试并且它完全按预期工作,所以现在,我需要通过我在应用程序实例中定义的 类 保留的变量,并使用诸如此类的东西轻松地返回它们如:
App.get_running_app().example_variable
谢谢,
克雷格
from screen_selections import NameSelection
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager
class ScreenManagerApp(App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.stage = {}
def build(self):
sm = ScreenManager()
sm.add_widget(NameSelection(name='name_selection'))
return sm
def write_to_console(self,input):
print(input)
if __name__ == '__main__':
ScreenManagerApp().run()
以上是我使用 Kivy 的主要 class。我之前问了一个很长的问题,但我希望这个问题更具体。
根据我在这里所做的,我直接在底部创建了一个 ScreenManagerApp 的实例并使用它的 运行 方法,这是 App parent class 中的一个方法。
我希望能够在我的代码中的任何地方,轻松地引用回这个应用程序实例(所以在本例中是 ScreenManagerApp()),因为我需要在这里存储可以在整个过程中引用的变量代码,但建议不要将它们创建为全局变量,这是更好的做法?
我知道我可能需要明确命名我的实例:
smApp = ScreenManagerApp()
smApp.run()
但我还是想不出访问我创建的这个新实例的最佳方式。
@JohnAnderson 在评论中回答,但我想结束这个问题。
App called get_running_app()中有一个静态方法,您可以在代码的任何地方使用它,它会返回到创建的实例。
我已经对此进行了测试并且它完全按预期工作,所以现在,我需要通过我在应用程序实例中定义的 类 保留的变量,并使用诸如此类的东西轻松地返回它们如:
App.get_running_app().example_variable
谢谢, 克雷格