0

我只是在学习 kivymd 的一些样式和设计,但是由于某种原因,当代码运行 kv = Builder.load_file(MainLayout.kv) 时,它会引发 Exception(

kivy.uix.screenmanager.ScreenManagerException:ScreenManager 只接受 Screen 小部件。

)。

我只是不能让它运行,而且不能再进一步了。无论我做出什么改变,它都会引发这个异常。

仅供参考,这是 Main.py 的代码

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivymd.uix.list import MDList
from kivymd.theming import ThemableBehavior
from kivy.core.window import Window


class Login(Screen):
    pass

class Settings(Screen):
    pass


sm = ScreenManager()
sm.add_widget(Login(name='login'))
sm.add_widget(Settings(name='settings'))

sm.current = "login"

class DemoApp(MDApp):
    class ContentNavigationDrawer(BoxLayout):
        pass

    class DrawerList(ThemableBehavior, MDList):
        pass

    def build(self):
        self.theme_cls.primary_palette = "Teal"
        Window.size = (412, 732)

        #The Error Occurs when the KV file is loaded
        kv = Builder.load_file("MainLayout.kv")
        return kv


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

这是 Kivy 文件,在登录文件中我只有 ()

#: include Login.kv
#: include Settings.kv. 
        
NavigationLayout:  
    id:nav_layout

    ScreenManager:
        Screen:  
            BoxLayout:  
                orientation: 'vertical'
                MDToolbar:
                    title: "Kivy Demo App"

                    Widget:
                ScreenManager:
                    id: screen_manager
                    Login:
                        id: login1
                        name: "login"


                    Settings:
                        id: settings1
                        name:"settings"


    MDNavigationDrawer:
        id: nav_drawer

        ContentNavigationDrawer:
            orientation: 'vertical'
            padding: "8dp"
            spacing: "8dp"

            MDLabel:
                text: 'Username'

            MDLabel:
                text: 'Captions'
4

2 回答 2

0

好的,解决这个问题并不难。我只是将类/页面的名称从设置更改为仅设置,它解决了问题。不确定它是如何影响代码的,但如果有人知道的话,我很想知道这个错误。

于 2020-08-07T21:29:15.307 回答
0

我遇到了同样的问题。类名“Settings”会导致错误“ScreenManager 仅接受 Screen 小部件”。我将类名更改为“设置”,屏幕小部件的 ID 和名称都更改为“设置”,一切正常。令人沮丧。

于 2021-12-23T17:44:34.080 回答