我试图在我的Kivy应用程序中显示温度传感器的数据。我从这个网站上找到了一些帮助材料,但我一直在尝试集成我的传感器代码,但它只是返回一个空白屏幕。我做错什么了?你知道吗
.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'
根本原因-黑屏
当应用程序运行时,有两个根实例。其中一个根(
LabelWidget:
)来自kv文件labeltest.kv
,另一个根来自return LabelWidget()
。应用程序使用的根目录来自return LabelWidget()
,它没有关联的模式视图。你知道吗解决方案
在kv文件中,
labeltest.kv
;将根规则,LabelWidget:
替换为类规则,<LabelWidget>:
问题2
在提供的最少代码中,没有使用Kivy ScreenManager。代码
self.manager.ids.TempLabel.text = str(thetemp)
将导致错误。你知道吗解决方案
从
self.manager.ids.TempLabel.text = str(thetemp)
中删除manager
。最终结果是self.ids.TempLabel.text = str(thetemp)
相关问题 更多 >
编程相关推荐