更新标签会在Kivy(Python)中返回空白屏幕

时间:2019-04-21 13:29:09

标签: python label kivy

我正在尝试在我的Kivy App中显示来自温度传感器的数据。我从该网站上找到了一些帮助材料,但是我一直在尝试将代码与传感器集成在一起,但是它只会返回一个空白屏幕。我在做什么错了?

.py文件:

from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.uix.label import Label
from kivy.uix.widget import Widget

import time
from w1thermsensor import W1ThermSensor


sensor = W1ThermSensor()



class LabelWidget(BoxLayout):
    manager = ObjectProperty(None)
    def __init__(self, **kwargs):
        super(LabelWidget, self).__init__(**kwargs)
        Clock.schedule_interval(self.getTemp, 2)
    def getTemp(self, dt):
        temperature = sensor.get_temperature()
        thetemp = temperature 
        self.manager.ids.TempLabel.text = str(thetemp)



class labeltestApp(App):

    def build(self):
        return LabelWidget()

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

.kv文件:

LabelWidget:
    Label:
        id: TempLabel
        text: 'temperature'
        text_size: self.size
        halign: 'right'
        valign: 'middle'

1 个答案:

答案 0 :(得分:0)

根本原因-黑屏

运行应用程序时,实例化了两个根。根目录(LabelWidget:之一来自您的kv文件labeltest.kv,另一个根目录来自return LabelWidget()。您的应用使用的根来自return LabelWidget(),该根没有关联的模式视图。

解决方案

在您的kv文件中,labeltest.kv;将根规则LabelWidget:替换为类规则<LabelWidget>:

问题2

在提供的最少代码中,没有使用Kivy ScreenManager。代码self.manager.ids.TempLabel.text = str(thetemp)将导致错误。

解决方案

manager中删除self.manager.ids.TempLabel.text = str(thetemp)。最终结果是self.ids.TempLabel.text = str(thetemp)