【问题标题】:ScreenManager accepts only Screen widget. is raised while run a basic codeScreenManager 只接受 Screen 小部件。在运行基本代码时引发
【发布时间】:2020-08-06 19:17:48
【问题描述】:

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

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

)。

我就是无法让它运行,也无法继续运行。无论我做出什么改变,它都会引发这个异常。

仅供参考,这是 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'

【问题讨论】:

  • 提供一个最小的例子。尝试从这个中删除尽可能多的内容。
  • 嘿!感谢您的建议...这足够还是我应该删除更多? Main.py 仅供参考,因为我是 kivy 的新手,我不确定那里是否也有问题......

标签: python kivy kivymd


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2016-09-06
      相关资源
      最近更新 更多