2016-04-20 6 views
0

Ich habe ein FloatLayout "DiceMazeGame", das mein Spiel enthält.Wie kann ich jedes Mal ein Widget hinzufügen, wenn ich den Spielbildschirm betrete?

Ich habe zwei Bildschirme (Menü und Spiel) und ich möchte hinzufügen, DiceMazeGame auf dem Spielbildschirm jedes Mal, wenn ich es (auf dem Menübildschirm) eingeben.

Das Spiel muss jedes Mal zurückgesetzt werden, wenn ich vom Menübildschirm zum Spielbildschirm gehe.

main.py

class DiceMazeGame(FloatLayout): 
    #init 
    #some functions 

class MenuScreen(Screen): 
    pass 

class GameScreen(Screen): 
    pass 

dicemaze.kv

ScreenManagement: 
    id: screen_manager 
    transition: NoTransition() 
    MenuScreen: 
     name:"menu" 
    GameScreen: 
     name:"game" 

<MenuScreen>: 
    Button: 
     on_press: root.manager.current = "game" 
     text: "Play !" 

<DiceMazeGame>: 
    # Widgets 

Mein Code fügt nur DiceMazeGame einmal auf den Bildschirm. Wie man es jedes Mal hinzufüge, wenn ich Spielbildschirm betrete?

class GameScreen(Screen): 
    def __init__(self, **kwargs): 
     super(GameScreen, self).__init__(**kwargs) 
     self.on_pre_enter(self.clear_widgets()) 
     self.on_pre_enter(self.add_widget(DiceMazeGame())) 
+1

Was genau ist Ihre Frage? – zeeMonkeez

+0

Wie füge ich "DiceMazeGame" jedes Mal, wenn ich es betrete, in den Spielbildschirm ein? In meinem Code kann ich nur "DiceMazeGame" hinzufügen, ich habe den Code zum Hauptpost hinzugefügt. – BigDan

Antwort

0

Sie müssen on_pre_enter Methode überschrieben werden, ist es nicht einmal in init verwenden:

class GameScreen(Screen): 

    # overwrite on_pre_enter method 
    def on_pre_enter(self): 
     self.add_widget(DiceMazeGame()) 

    # overwrite on_leave method - optional 
    def on_leave(self): 
     self.clear_widgets() 
+0

Vielen Dank, es funktioniert :) – BigDan

+0

@BigDan dann markieren Sie die Antwort als Lösung bitte. – jligeza

Verwandte Themen