Kivy - 用传感器数据更新标签?

核心2

kivy 和 OOP 的新手。

我正在尝试使用从温度传感器中提取的数据更新 kivy 中的标签。拉入传感器数据的代码在 labeltempmod 中。我创建了一个每秒调用一次的函数 getTheTemp()。在函数中,我尝试通过 Label(text=(format(thetemp)), font_size=80) 分配标签的文本。程序忽略了这一点。我在这里做错了什么?

#This is a test to see if I can write the temp to label
import labeltempmod
import kivy

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout

def getTheTemp(dt):
        thetemp =  labeltempmod.readtemp()
        Label(text=(format(thetemp)), font_size=80)
        print thetemp

class LabelWidget(BoxLayout):
    pass

class labeltestApp(App):
    def build(self):

        # call get_temp 0.5 seconds
        Clock.schedule_interval(getTheTemp, 1)

        return LabelWidget()

if __name__ == "__main__":
    labeltestApp().run()

这是 kivy 语言文件:

<LabelWidget>:
        orientation: 'vertical'
        TextInput:
                id: my_textinput
                font_size: 80
                size_hint_y: None
                height: 100
                text: 'default'
        FloatLayout:
                Label:
                        id: TempLabel
                        font_size: 150
                        text: 'Temp Test'

谢谢。

服务提供商

抱歉,您从不更新内容您只是在创建另一个标签

试试这个:

class LabelWidget(BoxLayout):

    def __init__(self, **kwargs):
        super(LabelWidget, self).__init__(**kwargs)
        Clock.schedule_interval(self.getTheTemp, 1)

    def getTheTemp(self, dt):
        thetemp =  labeltempmod.readtemp()
        self.ids.TempLabel.text = thetemp
        print thetemp

class labeltestApp(App):

    def build(self):
        return LabelWidget()

if __name__ == "__main__":
    labeltestApp().run()

更新:对于您的最后一个请求,我认为最好的方法是:

...
class LabelWidget(BoxLayout):

    def __init__(self, **kwargs):
        super(LabelWidget, self).__init__(**kwargs)
        self.Thetemp = None
        Clock.schedule_interval(self.getTheTemp, 1)

    def getTheTemp(self, dt):
        if self.Thetemp is None:
            self.thetemp =  labeltempmod.readtemp()
        else:
            self.thetemp =  labeltempmod.readtemp(self.theTemp)
        self.ids.TempLabel.text = str(self.thetemp)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章