【问题标题】:I don't understand the error message in kivymd我不明白 kivymd 中的错误信息
【发布时间】:2023-03-03 22:33:01
【问题描述】:

我正在尝试使用此代码使用 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()

但我收到此错误:

from kivymd.navigationdrawer import MDNavigationDrawer
 ModuleNotFoundError: No module named 'kivymd.navigationdrawer'
>>> 

这是我的 kv 文件:

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

NavigationLayout:
    MDNavigationDrawer:
<Button>:
    text: "Hey"

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: python kivy kivy-language


【解决方案1】:

解释——请阅读: 您正在使用一些为旧版 KivyMD 制作的代码。在新版本中,大多数小部件已移至 kivymd.uix 文件夹,因此您可以将 #:import NavigationLayout kivymd.navigationdrawer.NavigationLayout 更改为 #:import NavigationLayout kivymd.uix.navigationdrawer.NavigationLayout(所有其他小部件类似。但是,所有 KivyMD 小部件都会在 kv 文件中自动识别正如您在 main.py 文件中拥有 from kivymd.app import MDApp 一样。(在 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()

my.kv:

NavigationLayout:
    MDNavigationDrawer:
    Button:
        text: "Hey"

【讨论】:

  • 那么如果他们把它移动到不同的文件夹,我们怎么知道哪个文件夹有什么文件呢?因为我正在看一些一年前的 tuts 并且我不断遇到上述错误,如果我按照你的指示修复它们,我会收到 ValueErrors 并且我必须查看 HeaTTheatR 的 #api-github 存储库重大变化!!
【解决方案2】:

我也被困在这里,但我去了 C:\Program Files\Python39\Lib\site-packages\kivyMD 发现 NavigationDrawer 在 uix/ > 文件夹。所以导入应该是这样的

从 kivymd.uix.navigationdrawer 导入 MNavigationDrawer

。它对我有用。祝你好运! xD

这是一个简单的 .kv 代码

Screen:

    MDNavigationLayout:

        ScreenManager:

            Screen:

                BoxLayout:
                    orientation: 'vertical'

                    MDToolbar:
                        title: "Gray"
                        elevation: 10
                        left_action_items: [['menu', lambda x: nav_drawer.set_state("open")]]

                    Widget:


        MDNavigationDrawer:
            id: nav_drawer

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2016-10-09
    • 1970-01-01
    • 2011-12-19
    • 2019-07-26
    相关资源
    最近更新 更多