Смена экрана с языком .kv нажатием кнопки - PullRequest
0 голосов
/ 06 августа 2020

Я знаю kivy и kivymd, но пока не знаю функций. Я хочу изменить экран моего приложения при нажатии кнопки, как я могу это сделать? Спасибо.

Ниже мой код


from kivy.lang import Builder

from kivymd.app import MDApp

KV = '''

Screen:

    MDLabel: 
        text: "Material Design"
        font_style: "H3"
        theme_text_color: "Secondary"
        pos_hint: {"center_y": 0.9}
        halign: "center"
        
    MDRaisedButton:
        text: "Start"
        md_bg_color: 0, 0.26, 0.27, 1
        pos_hint: {"center_x": 0.5, "center_y": 0.2}
        on_press: root.manager.current = "main"

    MDRectangleFlatButton:
        text: "Exit"
        md_bg_color: rgba(197, 232, 204, 1)
        text_color: 0, 0.26, 0.27, 1
        pos_hint: {"center_x": 0.5, "center_y": 0.1}

        Screen:
            name: "main"

            MDLabel:
                text: "School guru"
                font_style: "H3"
                pos_hint: {"center_y": 0.8}
                halign: "center"
'''


class MaterialDesign(MDApp):
    def build(self):
        return Builder.load_string(KV)


MaterialDesign().run()

Пожалуйста, попробуйте отредактировать мой код и покажите, как это сделать.

Еще раз, спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Во-первых, если вы собираетесь переключаться между Screens, вам понадобится ScreenManager.

Вот модифицированная версия вашего кода, которая работает:

from kivy.lang import Builder

from kivymd.app import MDApp

KV = '''
ScreenManager:
    Screen:
    
        MDLabel: 
            text: "Material Design"
            font_style: "H3"
            theme_text_color: "Secondary"
            pos_hint: {"center_y": 0.9}
            halign: "center"
    
        MDRaisedButton:
            text: "Start"
            md_bg_color: 0, 0.26, 0.27, 1
            pos_hint: {"center_x": 0.5, "center_y": 0.2}
            on_press: root.current = "main"
    
        MDRectangleFlatButton:
            text: "Exit"
            md_bg_color: rgba(197, 232, 204, 1)
            text_color: 0, 0.26, 0.27, 1
            pos_hint: {"center_x": 0.5, "center_y": 0.1}
    
    Screen:
        name: "main"
    
        MDLabel:
            text: "School guru"
            font_style: "H3"
            pos_hint: {"center_y": 0.8}
            halign: "center"
'''


class MaterialDesign(MDApp):
    def build(self):
        return Builder.load_string(KV)


MaterialDesign().run()

Итак ScreenManager становится root из App, а его дочерние элементы - Screens. Свойство on_press для MDRaisedButton теперь просто root.current = "main".

...