如何将 NumericProperty 的值绑定到标签的文本?

How to bind the value of a NumericProperty to the Text of a Label?

使用 Kivy,我知道我们可以将标签的 text 设置为 StringProperty() 对象,这样每当该字符串更新时,标签就会自动显示更新后的文本。

我的最小示例代码运行良好,将在一秒后显示“apple”,然后显示“banana”:

 #test.kv
<MyLabel>:
    font_size: 30
    text: self.examppleStringProperty

#test.py
class MyLabel(Label):
    examppleStringProperty = StringProperty("apple")

    def on_kv_post(self, base_widget):
        Clock.schedule_interval(lambda dt : self.runlater(), 1)

    def runlater(self):
        self.examppleStringProperty = "banana"

class TestApp(App):
    def build(self): return MyLabel()

问题:我如何做完全相同的事情,但对于 Float?即每当 Float 的值发生变化时,让标签自动更新下一个?

我有一个用当前室温更新 Float 值的模块,我只想在 Kivy 的标签上显示它,但我不确定如何“自动”绑定它。

我试过 NumericProperty(),但当然我不能将 label.text 设置为 NumericProperty() 对象,因为它不是字符串。

例如,以下代码不起作用,根本不会将标签文本更新为数字 42,因为 NumericProperty 无论如何都没有绑定到标签文本。

class MyLabel(Label):
    examppleStringProperty = StringProperty("apple")
    exampleNumericProperty = NumericProperty(0)

    def on_kv_post(self, base_widget):
        self.text = str(self.exampleNumericProperty)
        Clock.schedule_interval(lambda dt : self.runlater(), 1)

    def runlater(self):
        self.exampleNumericProperty = 42

class TestApp(App):
    def build(self): return MyLabel()

只是在寻找任何好的方法来保持标签自动更新为浮点数的当前值..

我找到了一种方法(用 Float 的值更新 label.text),方法是使用“on_NumericProperty”函数。

但我将不胜感激任何建议,无论这是好设计还是坏设计 - 或者任何建议的替代方案。

class MyLabel(Label):
    exampleStringProperty = StringProperty("no data yet")
    exampleNumericProperty = NumericProperty(0)

    def on_exampleNumericProperty(self, *args):
        self.exampleStringProperty = str(self.exampleNumericProperty)

    def on_kv_post(self, base_widget):
        Clock.schedule_interval(lambda dt : self.runlater(), 3)

    def runlater(self):
        self.exampleNumericProperty = 42

class TestApp(App):
    def build(self): return MyLabel()