如何在每次进入游戏画面时添加一个小部件?

How to add a widget each time i enter game screen?

我有一个包含我的游戏的 FloatLayout "DiceMazeGame"。

我有两个屏幕(菜单和游戏),我想在每次进入游戏屏幕时将 DiceMazeGame 添加到游戏屏幕(从菜单屏幕)。

每次从菜单屏幕转到游戏屏幕时,游戏都需要自行重置。

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  

我的代码只将 DiceMazeGame 添加到屏幕一次。每次进入游戏画面如何添加?

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()))

您需要覆盖 on_pre_enter 方法,不要在 init 中使用它一次:

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()