ScreenManager принимает только виджет экрана. вызывается при запуске кода basi c - PullRequest
0 голосов
/ 06 августа 2020

Я просто изучаю некоторые стили и конструкции 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'

1 Ответ

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

Ладно, исправить это было несложно. Я просто изменил имя класса / страницы с settings на просто setting , и это устранило проблему. Не совсем уверен, как это повлияло на код, но хотелось бы узнать об ошибке, если кто-нибудь знает.

...