如何添加一个小部件每次我进入游戏屏幕?

2024-04-24 13:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个FloatLayout“DiceMazeGame”包含我的游戏。你知道吗

我有两个屏幕(菜单和游戏),我想添加DiceMazeGame到游戏屏幕,每次我进入它(从菜单屏幕)。你知道吗

每次我从一个菜单屏幕转到另一个游戏屏幕时,游戏都需要重新设置自己。你知道吗

你知道吗主.py你知道吗

class DiceMazeGame(FloatLayout):
     #init
     #some functions

class MenuScreen(Screen):
     pass

class GameScreen(Screen):
     pass

你知道吗1.5千伏你知道吗

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

Tags: nameself游戏屏幕initon菜单manager
1条回答
网友
1楼 · 发布于 2024-04-24 13:20:05

您需要覆盖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()

相关问题 更多 >