我不明白 kivymd 中的错误消息

Ank*_*wla 0 python kivy kivy-language

我正在尝试使用以下代码使用 kivymd:

    from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.navigationdrawer import MDNavigationDrawer
from kivymd.navigationdrawer import NavigationLayout
from kivymd.card import MDSeparator


class MyApp(App):
    theme_cls=ThemeManager()

if __name__ == "__main__":
    m = MyApp()
    m.run()
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

from kivymd.navigationdrawer import MDNavigationDrawer
 ModuleNotFoundError: No module named 'kivymd.navigationdrawer'
>>> 
Run Code Online (Sandbox Code Playgroud)

这是我的 kv 文件:

#:import NavigationLayout kivymd.navigationdrawer.NavigationLayout
#:import MDSeparator kivymd.card

NavigationLayout:
    MDNavigationDrawer:
<Button>:
    text: "Hey"
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗 ?

Eri*_*rik 5

说明——请阅读:您正在使用一些为旧版本 KivyMD 编写的代码。在新版本中,大多数小部件已移至该kivymd.uix文件夹,因此您可以更改#:import NavigationLayout kivymd.navigationdrawer.NavigationLayout#:import NavigationLayout kivymd.uix.navigationdrawer.NavigationLayout(对于所有其他小部件也类似。但是,kv只要您from kivymd.app import MDApp的文件中包含所有 KivyMD 小部件,它们都会在main.py文件中自动识别。(在 Python 中,您将from kivymd.uix.navigationdrawer import MDNavigationDrawer如果您需要在Python中访问该类,仍然需要编写或其他内容)。

解决方案:

main.py:

from kivymd.app import MDApp

class MyApp(MDApp):
    pass

if __name__ == "__main__":
    m = MyApp()
    m.run()
Run Code Online (Sandbox Code Playgroud)

my.kv:

NavigationLayout:
    MDNavigationDrawer:
    Button:
        text: "Hey"
Run Code Online (Sandbox Code Playgroud)