更新创建的自定义 KivyMD 属性

Updating Created Custom KivyMD Property

我希望有办法做到这一点,但不完全确定。我想要一种在按下按钮后更新所有标签的方法。这就是我目前正在做的,它会抛出一个错误,但我不太明白。

目前我正在尝试向自定义标签添加一个 id,然后调用它,但这不起作用。

Python代码:

from kivy.lang import Builder
from kivymd.app import MDApp


class MainApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_file("main.kv")

    def build(self):
        self.theme_cls.theme_style = "Dark"

        return self.screen

    def button_press(self):
        self.root.ids.custom_label.text = "Two"


if __name__ == '__main__':
    MainApp().run()

Kivy 文件:

<MDLabel>
    id: custom_label
    text: "One"
    halign: "center"


BoxLayout:
    orientation: "vertical"

    MDLabel

    MDLabel

    MDRoundFlatButton:
        text: "Press"
        pos_hint: {"center_x": 0.5, "center_y": 0.5}
        on_release: app.button_press()

首先,您不能命名自定义标签 MDLabel。 像这样重构你的代码。从您的 .kv 文件开始

<CustomLabel@MDLabel>
    text: "One"
    halign: "center"


BoxLayout:
    orientation: "vertical"

    CustomLabel:
        id: custom_label_1

    CustomLabel:
        id: custom_label_2

    MDRoundFlatButton:
        text: "Press"
        pos_hint: {"center_x": 0.5, "center_y": 0.5}
        on_release: app.button_press()

您的 .py 文件中的

from kivy.lang import Builder
from kivymd.app import MDApp


class MainApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_file("main.kv")

    def build(self):
        self.theme_cls.theme_style = "Dark"

        return self.screen

    def button_press(self):
        self.root.ids.custom_label_1.text = "Two"
        self.root.ids.custom_label_2.text = "Two"


if __name__ == '__main__':
    MainApp().run()

希望有用。您不能有 2 个使用相同 ID 的小部件。所以如果你想更改 2 个自定义标签的文本,你将不得不单独引用它们