无法将 right_action_items 添加到 KivyMD 工具栏

Can't add right_action_items to KivyMD Toolbar

我正在尝试向我的 MDToolbar 添加 2 个按钮,它们通常使用 属性 right_action_items。我的工具栏代码如下所示:

        self.main_toolbar = MDToolbar(
        title = "Home",
        right_action_items = [["import", lambda args: print("import pressed")],["export", lambda args: print("export pressed")]],
        pos_hint = {"top": 1}
    )z

    self.smain.add_widget(self.main_toolbar)

self.smain 是我的屏幕变量。

我得到的错误说在 kivymd 模块的某处有一个带有“right_actions”的 KeyError。错误中没有任何对我的代码的引用,只是说错误来自我的 MDToolbar

最小可重现样本:

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.toolbar import MDToolbar

class MyApp(MDApp):
    def build(self):
        screen = MDScreen()

        screen.add_widget(MDToolbar(
            title = "Placeholder",
            right_action_items = [["import", lambda x: print("import clicked")], ["export", lambda x: print("export clicked")]]
        ))

        return screen

MyApp().run()

实际上你有一些事情可以解决这个问题(问题实际上存在于 MDToolbar 的源代码中,它在 kvlang 中工作得很好,但在 python 中却不行)。

在这里,你可以使用attr。 right_action_items 就像 class 属性。而不是实例属性。作为,

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.toolbar import MDToolbar

class MyApp(MDApp):
    def build(self):
        screen = MDScreen()

        self.tb = MDToolbar(
            title = "Placeholder",
        )
        self.tb.right_action_items = [["import", lambda x: print("import clicked")], ["export", lambda x: print("export clicked")]]
        screen.add_widget(self.tb)

        return screen

MyApp().run()