Обновление метки возвращает пустой экран в Kivy (Python) - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь отобразить данные с датчика температуры в моем приложении 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'

1 Ответ

0 голосов
/ 22 апреля 2019

Причина корня - пустой экран

При запуске приложения было создано два корневых экземпляра.Один из корней (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)

...