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

2024-09-30 08:29:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的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'

Tags: 文件textfromimportselfappdeflabel
1条回答
网友
1楼 · 发布于 2024-09-30 08:29:37

根本原因-黑屏

当应用程序运行时,有两个根实例。其中一个根(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)

相关问题 更多 >

    热门问题