如何使用 kivy 中的弹出窗口小部件更改屏幕?

How to change screen with a popup widget in kivy?

我在我的 kivy 应用程序中使用弹出窗口作为暂停菜单。但我无法弄清楚如何用它改变屏幕。我试过 root.manager.current 但那没有用,因为我的弹出窗口小部件不是屏幕。我还尝试使用 self.manager.current 在 python 中创建一个函数,但可惜这也不起作用。这是我现在唯一能想到的想法,但也行不通。任何和所有的帮助表示赞赏。

python 片段

class PausePopup(Popup):
    pass

class MahScreenManager(ScreenManager):
    pass

class MahMenu(Screen):
    pass

class MahGame(Screen):

class MahGameApp(App):
    def build(self):
        window_color = get_color_from_hex("#eaeaea")
        Window.clearcolor = window_color
        return MahScreenManager()

MahGameApp().run()

kv

<MahScreenManager>:
    MahMenu:
        name: "menu"
        id: menu
    MahGame:
        name: "game"
        id: game 

<PausePopup>:
    title: "Gahme is paused"
    size_hint: .5, .7
    BoxLayout:
        orientation: "vertical"
        padding: 10
        spacing: 10
        Button:
            text: "Continue"
            on_release: root.dismiss()

        Button:
            text: "Settings"
            on_release: app.open_settings()
        Button:
            text: "Main Menu"
            on_release: Factory.MahGame().current = "menu"

<MahMenu>:
    BoxLayout:
        padding: 50
        spacing: 25
        orientation: "vertical"
        Button:
            text: "Start Mah Gahme"
            on_release:
                root.manager.transition.direction = "left"
                root.manager.current = "game"
        Button:
            text: "Quit"
            on_release: app.stop()

<MahGame>:
    Button:
        text: "Pause"
        size_hint: 0.1, 0.1
        on_release: Factory.PausePopup().open()

例如,如果您的屏幕管理器在 App class 中,您可以这样做:

app.sm.current = "menu"

然后在您的应用程序 class 中,这样做:

    self.sm = MahScreenManager()
    return self.sm