2016-08-18 17 views
0

Ich versuche, eine Anwendung mit einem Settings Bildschirm (in einem ScreenManager) zu erstellen. Wie stelle ich die Settings in eine Screen, so kann ich die Screen in eine ScreenManager so platzieren, wenn die Screen navigiert wird, um die Settings Instanz gerendert wird, dann ist es mit ihm weg navigiert weg davon versteckt?Verwenden von Kivys Einstellungen als Bildschirm

+0

Haben Sie etwas versucht? Wie sieht dein Code jetzt aus? – EL3PHANTEN

+0

Die Standardmethode zum Anzeigen der Einstellungen scheint 'open_settings()' zu sein, aber nach dem Überprüfen des Rückgabewerts (der boolesch ist) weiß ich nicht, wie das Widget abgerufen werden soll, um den 'Screen'-Instance-Store zu speichern (und anzuzeigen). Kurz gesagt, ich habe nicht explizit versucht, es an den 'Bildschirm' anzuhängen, weil ich nicht sehe, wie man es macht (obwohl die Dokumentation anzeigt, dass es einem' ScreenManager' hinzugefügt werden kann). – FluxIX

+0

Sie möchten also ein Beispiel für die Verwendung von Bildschirmen? – EL3PHANTEN

Antwort

0

Hier ist ein grundlegendes Beispiel für die Verwendung des Screenmanagers mit zwei Bildschirmen.

from kivy.app import App 
from kivy.uix.screenmanager import Screen,ScreenManager 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 
from kivy.uix.label import Label 



class ScreenOne(Screen): 

    def __init__(self,**kwargs): 
     super(ScreenOne,self).__init__(**kwargs) 
     self.box = BoxLayout(orientation='vertical') 

     self.label1 = Label(text="One label on screen 1") 
     self.label2 = Label(text="Another label label") 

     self.button = Button(text="Go to screen 2") 
     self.button.bind(on_press=self.change_screen) 

     self.box.add_widget(self.label1) 
     self.box.add_widget(self.label2) 

     self.box.add_widget(self.button) 

     self.add_widget(self.box) 

    def change_screen(self,*args): 
     self.manager.current = 'screen2' 



class ScreenTwo(Screen): 
    def __init__(self,**kwargs): 
     super (ScreenTwo,self).__init__(**kwargs) 

     self.box = BoxLayout(orientation='vertical') 

     self.label1 = Label(text="One label on screen 2") 
     self.label2 = Label(text="Another label label") 

     self.button = Button(text="Go to screen 1") 
     self.button.bind(on_press=self.change_screen) 

     self.box.add_widget(self.label1) 
     self.box.add_widget(self.label2) 

     self.box.add_widget(self.button) 

     self.add_widget(self.box) 

    def change_screen(self,*args): 
     self.manager.current = 'screen1' 



class MyApp(App): 
    def __init__(self,**kwargs): 
     super(MyApp,self).__init__(**kwargs) 
     self.sm = ScreenManager() 

     self.sm.add_widget(ScreenOne(name = "screen1")) 
     self.sm.add_widget(ScreenTwo(name = "screen2")) 


    def build(self): 
     return self.sm 



if __name__ == "__main__": 
    MyApp().run() 
Verwandte Themen