我正在尝试在我的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'
答案 0 :(得分:0)
运行应用程序时,实例化了两个根。根目录(LabelWidget:
之一来自您的kv文件labeltest.kv
,另一个根目录来自return LabelWidget()
。您的应用使用的根来自return LabelWidget()
,该根没有关联的模式视图。
在您的kv文件中,labeltest.kv
;将根规则,LabelWidget:
替换为类规则,<LabelWidget>:
在提供的最少代码中,没有使用Kivy ScreenManager。代码self.manager.ids.TempLabel.text = str(thetemp)
将导致错误。
从manager
中删除self.manager.ids.TempLabel.text = str(thetemp)
。最终结果是self.ids.TempLabel.text = str(thetemp)