Kivy应用程序有很多屏幕

时间:2014-09-14 03:19:58

标签: python python-2.7 kivy

我的kivy应用程序有近100个屏幕。我正在使用ScreenManager在启动时加载屏幕(下面的代码),但这导致应用程序需要30秒才能加载。是否有一种更有效的方式来处理kivy中的屏幕,因此屏幕仅在需要时加载而不是在应用程序启动时加载所有屏幕?我已经看过kivy的switch_to(),但是我不确定如何在Button小部件中使用它而不是on_press: root.manager.current = 'login',或者如果switch_to()甚至适合这个用例。在具有多个屏幕的kivy应用程序中,有效加载和切换屏幕的最佳做法是什么?

class LoginScreen(Screen):
   ...


class GameApp(App):

    sm = ScreenManager()

    def build(self):

        self.sm.add_widget(LoginScreen(name='login'))
        self.sm.add_widget(SignUpScreen(name='signup'))
        ...

1 个答案:

答案 0 :(得分:3)

  

我的kivy应用程序有近100个屏幕。我正在使用ScreenManager在启动时加载屏幕(下面的代码),但这导致应用程序需要30秒才能加载。是否有更有效的方法来处理kivy中的屏幕,因此屏幕仅在需要时加载而不是在应用启动时加载所有屏幕?

是的,自行编码屏幕缓存,例如用您自己的方法做任何你想做的事情(例如,如果存在太多,则卸载屏幕,如果它还不存在则创建新屏幕,通过设置.current等显示新屏幕。)

  

我见过kivy的switch_to()

switch_to()只需要一个新屏幕,完全删除旧屏幕并显示新屏幕(不像只设置.current,它不会完全删除旧屏幕)。您可能会发现它很方便,但它并不能直接解决您的问题。