首页 > 解决方案 > KivyMD 使用 MDToolbar 产生错误:self._shadow = App.get_running_app().theme_cls.quad_shadow

问题描述

每当我使用 MDNavigationToolbar 或 MDToolbar 小部件时,我都会收到错误消息

message line 111, in _update_shadow
     self._shadow = App.get_running_app().theme_cls.quad_shadow

我已经阅读了很多关于这个主题的信息,并遵循了这个例子:

错误:在 _update_shadow self._shadow = App.get_running_app().theme_cls.quad_shadow

我完全按照步骤操作,它停止了崩溃,但我的应用程序只有一个空白屏幕,我看不到工具栏(即使在玩弄了颜色之后)

class LoginWindow(Screen):
    pass


class CreateAccountWindow(Screen):
    pass


class QrScannerWindow(Screen):
    pass


class WindowManager(ScreenManager):
    pass


kv = Builder.load_file("mykivy.kv")
sm = WindowManager()

screens = [LoginWindow(name="login"), CreateAccountWindow(name="create account"), QrScannerWindow(name="qr scanner")]
for screen in screens:
    sm.add_widget(screen)

sm.current = "qr scanner"

class MyApp(App):
    theme_cls = ThemeManager()

    def build(self):
        return sm

.kv 文件:


WindowManager:
    LoginWindow:
    CreateAccountWindow:
    QrScannerWindow:

<QrScannerWindow>:
    name: "qr scanner"

    NavigationLayout:
        MDNavigationDrawer:
            NavigationDrawerToolbar:

标签: pythonpython-3.xkivykivy-language

解决方案


虽然KivyMD处于alpha状态,但它可能存在错误。KivyMD 小部件期望在其初始化应用程序对象上已经创建。

请在构建函数中创建所有小部件:

    def build(self):
        kv = Builder.load_file("mykivy.kv")
        sm = WindowManager()

        screens = [LoginWindow(name="login"), CreateAccountWindow(name="create account"), QrScannerWindow(name="qr scanner")]
        for screen in screens:
            sm.add_widget(screen)

        sm.current = "qr scanner"
        return sm

推荐阅读