Переключение между меню в кивах - PullRequest
0 голосов
/ 24 апреля 2020

Я использую kivy для создания базового c меню.

В результате получается довольно простое меню. Все идет нормально.

enter image description here

Проблема

Когда я нажимаю кнопку настроек, я хочу, чтобы приложение очистило экран и выполнило SettingsMenu, что Предполагается создать кнопку, которая должна позволить мне go вернуться в главное меню. Однако нажатие кнопки настроек только очищает экран и не добавляет никаких новых кнопок.

Как я могу go взад и вперед между этими меню? Кроме того, какова правильная терминология для использования здесь - Как нарисовать новые виджеты на моем root виджете?

Файл python:

import kivy
from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.widget import Widget

class StartMenu(AnchorLayout):

    def go_to_settings(self):
        self.clear_widgets()
        return SettingsMenu()

class SettingsMenu(AnchorLayout):

    def go_to_main_menu(self):
        self.clear_widgets()
        return StartMenu()

class SpaceGameApp(App):

    def build(self):
        return StartMenu()

if __name__ == '__main__':
    SpaceGameApp().run()

И .kv файл:

#:kivy 1.11.1

<StartMenu>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'center'
        size_hint: (0.3,0.5)
        StackLayout:
            spacing:10
            Button:
                size_hint: (1,0.2)
                text: "start"
            Button:
                size_hint: (1,0.2)
                text: "settings"
                on_release: root.go_to_settings()

<SettingsMenu>:
    AnchorLayout:
        anchor_x:'center'
        anchor_y:'center'
        size_hint: (0.3, 0.5)
        StackLayout:
            spacing:10
            Button:
                size_hint: (1,0.2)
                text: "back"
                on_release: root.go_to_main_menu()
...