2014-09-14 5 views
2

내 kivy 앱은 거의 100 개의 스크린을 가지고 있습니다. ScreenManager를 사용하여 시작 화면 (아래 코드)을로드하지만 이로 인해 앱로드 시간이 30 초가 소요됩니다. kivy에서 화면을 처리하는보다 효율적인 방법이 있습니까? 그래서 앱을 시작할 때 모든 화면을로드하는 대신 필요한 경우에만 화면을로드 할 수 있습니까? kivy의 switch_to()를 보았지만 Button 위젯에서 on_press: root.manager.current = 'login' 대신 이것을 사용하는 방법이나 switch_to()가이 사용 사례에 적합한 지 여부는 잘 모르겠습니다. 화면이 많은 kivy 앱에서 화면을 효율적으로로드하고 전환하는 가장 좋은 방법은 무엇입니까?많은 화면이있는 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')) 
     ... 

답변

3

내 kivy의 응용 프로그램은 거의 100 화면을 가지고 있습니다. ScreenManager를 사용하여 시작 화면 (아래 코드)을로드하지만 이로 인해 앱로드 시간이 30 초가 소요됩니다. kivy에서 화면을 처리하는보다 효율적인 방법이 있습니까? 그래서 앱을 시작할 때 모든 화면을로드하는 대신 필요한 경우에만 화면을로드 할 수 있습니까?

예. (너무 많은이 존재하는 경우 등 .current를 설정하여 새로운 화면을 보여주는, 아직 존재하지 않는 경우 새 화면을 만들어, 예를 들어, 언 로딩 화면)이

내가했습니다를 원하는 않는 자신 만의 방법 본 kivy의 switch_to는()

switch_to() 단지, 새 화면을 소요 완전히 이전을 제거하고 (단지 이전 완전히 제거되지 않습니다 .current를 설정 달리) 새로운 하나를 보여줍니다. 편리 할 수도 있지만 문제를 직접 해결하지는 못합니다.

+0

감사합니다. 처음에 app build() 메소드에 추가하지 않고 kv 언어로 스크린을 추가하는 권장 방법은 무엇입니까? – mcastle

+0

다른 것과 마찬가지로 add_widget을 사용하십시오. – inclement