声明后数据无效 - KivyMD

Invalid data after declaration - KivyMD

我正在尝试将 kivyMD 列表用作按钮,即当单击 KivyMD 列表时,它会将用户带到另一个屏幕,但我不断收到“声明后无效数据”错误。

请观察我的代码是否有任何异常,这可能是导致此问题的原因..

这是我的 main.py 文件

from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition

from kivy.core.window import Window

Window.size = (300, 500)


class IntroScreen(Screen):
    pass


class SuccessScreen(Screen):
    pass


class SearchScreen(Screen):
    pass


class MenuScreen(Screen):
    pass


class GettingStartedScreen(Screen):
    pass


class ProjectApp(MDApp):
    def build(self):
        self.sm = ScreenManager(transition=NoTransition())
        self.sm.add_widget(IntroScreen(name="intro_screen"))
        self.sm.add_widget(GettingStartedScreen(name="getting_started_screen"))
        self.sm.add_widget(SuccessScreen(name="success_screen"))
        self.sm.add_widget(SearchScreen(name='search_screen'))
        self.sm.add_widget(MenuScreen(name="menu_screen"))

        return self.sm

    def change_screen(self, screen, *kwargs):
        self.sm.current = "intro_screen"
        self.sm.current = "getting_started_screen"
        self.sm.current = "success_screen"
        self.sm.current = "search_screen"
        self.sm.current = "menu_screen"
        self.sm.current = screen


ProjectApp().run()

这是我的 .kv 文件

ScreenManager:

<IntroScreen>
    name: "intro_screen"

    FloatLayout:

# """Secondly, please is there a way to make MDCard auto
# resize automatically on any screen"""
        MDCard:
            orientation: 'vertical'
            padding: 16
            size_hint: None, None
            size: "280dp", "360dp"
            pos_hint: {"center_x": .5, "center_y": .6}
            elevation: 8
            orientation: 'vertical'
            radius: 15

            ScrollView:
                MDList:
                    OneLineIconListItem:
                        text: "WHAT IS KETO DIET"
                        IconLeftWidget:
                           icon: "cash-multiple"
                    OneLineIconListItem:
                        text: "WHY TRY KETO DIET"
                        IconLeftWidget:
                            icon: "cash-100"
                    OneLineIconListItem:
                        text: "IS KETO RIGHT FOR YOU"
                        IconLeftWidget:
                            icon: "cash-marker"
                    OneLineIconListItem:
                        text: "GETTING STARTED"
                        IconLeftWidget:
                            icon: "cash"
                        on_touch_down: app.root.current = "getting_started_screen" #I THINK THIS IS WHERE THE INVALID DATA ERROR OCCURS

        MDBottomAppBar:
            MDToolbar:
                icon: "arm-flex-outline"
                type: 'bottom'
                mode: 'center'
                left_action_items: [["calendar-text", lambda x: x], ["account-group", lambda x: app.change_screen("success_screen")]]
                right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: app.change_screen("menu_screen")]]

<GettingStartedScreen>
    name: "getting_started_screen"

    FloatLayout:
        MDCard:
            orientation: "vertical"
            elevation: 10
            radius: 10
            OneLineIconListItem:
                text: "WHAT TO KNOW BEFORE STARTING"
                IconLeftWidget:
                    icon: "cash"
            OneLineIconListItem:
                text: "WHAT TO DO BEFORE STARTING"
                IconLeftWidget:
                    icon: "cash"
            OneLineIconListItem:
                text: "HOW TO START THE KETO DIET"
                IconLeftWidget:
                    icon: "cash"
            OneLineIconListItem:
                text: "FREQUENTLY ASKED QUESTIONS"
                IconLeftWidget:
                    icon: "cash"


<SuccessScreen>
    name: "success_screen"

    BoxLayout:
        orientation: "vertical"

        MDBottomAppBar:
            MDToolbar:
                icon: "magnify"
                on_action_button: app.change_screen("search_screen") 
                type: 'bottom'
                mode: 'center'
                left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: x]]
                right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: app.change_screen("menu_screen")]]

<SearchScreen>
    name: 'search_screen'

    BoxLayout:
        orientation: 'vertical'

        MDBottomAppBar:
            MDToolbar:
                icon: "window-close"
                type: "bottom"
                mode: "center"
                left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: app.change_screen("success_screen")]]
                right_action_items: [["magnify", lambda x: x], ["menu", lambda x: app.change_screen("menu_screen")]]

<MenuScreen>
    name: "menu_screen"

    BoxLayout:
        orientation: "vertical"

        MDBottomAppBar:
            MDToolbar:
                icon: "reload"
                type: "bottom"
                mode: "center"
                left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: app.change_screen("success_screen")]]
                right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: x]]

非常感谢...请在我认为会发生此错误的地方留下评论。其次,我如何制作 MDCard,在 .kv 文件中仅在屏幕尺寸上自动调整大小。 . 再次提前致谢..

OneLineIconListItemButton 的一种类型,因此您只需添加一个 on_release 属性即可。:

            MDList:
                OneLineIconListItem:
                    text: "WHAT IS KETO DIET"
                    IconLeftWidget:
                        icon: "cash-multiple"
                OneLineIconListItem:
                    text: "WHY TRY KETO DIET"
                    IconLeftWidget:
                        icon: "cash-100"
                OneLineIconListItem:
                    text: "IS KETO RIGHT FOR YOU"
                    IconLeftWidget:
                        icon: "cash-marker"
                OneLineIconListItem:
                    text: "GETTING STARTED"
                    on_release:
                        app.root.current = "getting_started_screen"
                    IconLeftWidget:
                        icon: "cash"