2017-12-24 27 views
0

Dies ist die erste Frage, die ich so Entschuldigung, wenn die Frage nicht abgeschlossen ist.Bildschirm-Manager in kivy mit kv-Datei

Ich versuchte das Beispiel auf kivys offizieller Seite für Screen Manager und es funktioniert, aber wenn ich versuche, eine kv-Datei anstelle des Builders zu verwenden, erhalte ich eine schwarze Seite.

Test.py

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 

class MenuScreen(Screen): 
    pass 

class SettingsScreen(Screen): 
    pass 

# Create the screen manager 
sm = ScreenManager() 
sm.add_widget(MenuScreen(name='menu')) 
sm.add_widget(SettingsScreen(name='settings')) 

class TestApp(App): 

    def build(self): 
     return sm 

if __name__ == '__main__': 
    TestApp().run() 

Test.kv

<MenuScreen>: 
    BoxLayout: 
     Button: 
      text: 'Goto settings' 
      on_press: root.manager.current = 'settings' 
     Button: 
      text: 'Quit' 

<SettingsScreen>: 
    BoxLayout: 
     Button: 
      text: 'My settings button' 
     Button: 
      text: 'Back to menu' 
      on_press: root.manager.current = 'menu' 
+1

Sie sollten den Titel als Fragen formulieren oder Ihren Fehler irgendwie zeigen. Mir ist es offensichtlich nicht klar was du willst. Was ist deine Frage? –

+0

Ihre 'Test.kv' sollte' test.kv' (Kleinbuchstaben) sein –

+0

Es sollten zwei Schaltflächen angezeigt werden, aber es wird nichts angezeigt. Das Ändern von Test.kv zu test.kv funktioniert nicht. – Dean

Antwort

0

Ihre test.py aussehen sollte:

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 

# Declare both screens 
class MenuScreen(Screen): 
    pass 

class SettingsScreen(Screen): 
    pass 

class TestApp(App): 
    pass 

if __name__ == '__main__': 
    TestApp().run() 

Und Ihre test.kv Datei sollte sein:

#: kivy 1.10.0 

ScreenManager: 
    id: screen_manager 
    MenuScreen: 
     id: menu_screen 
     name: 'menu' 
     manager: 'screen_manager' 
    SettingsScreen: 
     id: settings_screen 
     name: 'settings' 
     manager: 'screen_manager' 

<MenuScreen>: 
    BoxLayout: 
     Button: 
      text: 'Goto settings' 
      on_press: app.root.current = 'settings' 
     Button: 
      text: 'Quit' 

<SettingsScreen>: 
    BoxLayout: 
     Button: 
      text: 'My settings button' 
     Button: 
      text: 'Back to menu' 
      on_press: app.root.current = 'menu'