Python Kivy未知类<;导航抽屉按钮>;

Python Kivy未知类<;导航抽屉按钮>;,python,kivy,Python,Kivy,尝试使用示例,但得到'kivy.factory.FactoryException:未知类 问题出在 MainNavigationLayout: MDNavigationDrawer: id: navigation_drawer drawer_logo: "menu.png" NavigationDrawerIconButton: icon: "home"

尝试使用示例,但得到'kivy.factory.FactoryException:未知类

问题出在

MainNavigationLayout:
    MDNavigationDrawer:
        id: navigation_drawer
        drawer_logo: "menu.png"

        NavigationDrawerIconButton:
            icon: "home"
            text: "Inicio"
            on_release: screen_manager.current = "screen_inicio"

        NavigationDrawerIconButton:
            icon: "lock"
            text: "Pagina segunda"
            on_release: screen_manager.current = "screen_segundo"

出现此错误是因为导航抽屉的用法已更改。请参阅

如果您正在寻找登录示例

这是我之前设计的登录表单(用户名:admin,密码:admin):

login.py

from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager as scr_mngr
from kivymd.toast import toast
from kivy.core.window import Window
from kivymd.uix.tab import MDTabsBase
from kivy.uix.floatlayout import FloatLayout
        
class Tab(FloatLayout, MDTabsBase):
    pass

class MyLayout(BoxLayout):
        
    def check_data_login(self):
                
        self.ids['spinner'].active=True
        username = self.ids['username'].text
        password = self.ids['password'].text
        print(username)
        print(password)
        if  not username and not password:
            toast("Username and password are required")
        elif  not username:
            toast("Username is required ")
        elif not password:
            toast("Password is required")
        else:
            if username == "admin" and  password == "admin":
                self.ids['spinner'].active=False
                self.change_screen("screen2")
            else:
                self.ids['spinner'].active=False
                toast("Wrong username or password")
        
    def change_screen(self, screen, *args):
        self.scr_mngr.current = screen
        
        
class DemoApp(MDApp):
        pass
    
if __name__ == '__main__':
    Window.show_cursor = True
    Window.size = (360, 680)
    DemoApp().run()
千伏

MyLayout:
    scr_mngr: scr_mngr
    orientation: 'vertical'
    ScreenManager:
        id: scr_mngr
        Screen:
            id: screen1
            name: 'screen1'
            MDSpinner:
                id:spinner
                size_hint: None, None
                size: dp(46), dp(46)
                pos_hint: {'center_x': .5, 'center_y': .5}
                active: False
            MDToolbar:
                md_bg_color: 0, 0, 1, 1
                title: "Login Screen"
                pos_hint:{"top": 1}
                elevation: 11
            BoxLayout:
                orientation: "vertical"
                padding: "16dp"
                spacing: "16dp"
                size_hint_y: None
                height: self.minimum_height
                pos_hint: {"center_y": .6}
                
                MDLabel:
                    text: "Log In"
                    halign: "center"
                    font_style: "H4"
                    size_hint_y: None
                MDTextField:
                    id: username
                    hint_text: "Username "
                    helper_text_mode: "on_focus"
                    required: True
                
                MDTextField:
                    id: password
                    hint_text: "Password "
                    helper_text_mode: "on_focus"
                    required: True
                    password: True


            MDRaisedButton:
                text: "LOGIN"
                pos_hint: {"center_x": 0.5, "center_y": 0.3}

                on_release: root.check_data_login()
        Screen:
            id: screen2
            name: 'screen2'
            BoxLayout:
                orientation: 'vertical'
                MDToolbar:
                    md_bg_color: 0, 0, 1, 1
                    id: toolbar
                    title: "Page 2"
                BoxLayout:
                    orientation: 'vertical'
                    MDTabs:
                        Tab:
                            text: "Tab1"
                        Tab:
                            text: "Tab2"                            

出现此错误是因为导航抽屉的用法已更改。请参阅

如果您正在寻找登录示例

这是我之前设计的登录表单(用户名:admin,密码:admin):

login.py

from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager as scr_mngr
from kivymd.toast import toast
from kivy.core.window import Window
from kivymd.uix.tab import MDTabsBase
from kivy.uix.floatlayout import FloatLayout
        
class Tab(FloatLayout, MDTabsBase):
    pass

class MyLayout(BoxLayout):
        
    def check_data_login(self):
                
        self.ids['spinner'].active=True
        username = self.ids['username'].text
        password = self.ids['password'].text
        print(username)
        print(password)
        if  not username and not password:
            toast("Username and password are required")
        elif  not username:
            toast("Username is required ")
        elif not password:
            toast("Password is required")
        else:
            if username == "admin" and  password == "admin":
                self.ids['spinner'].active=False
                self.change_screen("screen2")
            else:
                self.ids['spinner'].active=False
                toast("Wrong username or password")
        
    def change_screen(self, screen, *args):
        self.scr_mngr.current = screen
        
        
class DemoApp(MDApp):
        pass
    
if __name__ == '__main__':
    Window.show_cursor = True
    Window.size = (360, 680)
    DemoApp().run()
千伏

MyLayout:
    scr_mngr: scr_mngr
    orientation: 'vertical'
    ScreenManager:
        id: scr_mngr
        Screen:
            id: screen1
            name: 'screen1'
            MDSpinner:
                id:spinner
                size_hint: None, None
                size: dp(46), dp(46)
                pos_hint: {'center_x': .5, 'center_y': .5}
                active: False
            MDToolbar:
                md_bg_color: 0, 0, 1, 1
                title: "Login Screen"
                pos_hint:{"top": 1}
                elevation: 11
            BoxLayout:
                orientation: "vertical"
                padding: "16dp"
                spacing: "16dp"
                size_hint_y: None
                height: self.minimum_height
                pos_hint: {"center_y": .6}
                
                MDLabel:
                    text: "Log In"
                    halign: "center"
                    font_style: "H4"
                    size_hint_y: None
                MDTextField:
                    id: username
                    hint_text: "Username "
                    helper_text_mode: "on_focus"
                    required: True
                
                MDTextField:
                    id: password
                    hint_text: "Password "
                    helper_text_mode: "on_focus"
                    required: True
                    password: True


            MDRaisedButton:
                text: "LOGIN"
                pos_hint: {"center_x": 0.5, "center_y": 0.3}

                on_release: root.check_data_login()
        Screen:
            id: screen2
            name: 'screen2'
            BoxLayout:
                orientation: 'vertical'
                MDToolbar:
                    md_bg_color: 0, 0, 1, 1
                    id: toolbar
                    title: "Page 2"
                BoxLayout:
                    orientation: 'vertical'
                    MDTabs:
                        Tab:
                            text: "Tab1"
                        Tab:
                            text: "Tab2"                            

谢谢你的好解决方案谢谢你的好解决方案