Neu in Kivy und OOP.Kivy - Aktualisieren Sie ein Etikett mit Sensordaten?
Ich versuche, ein Etikett in Kivy mit Daten zu aktualisieren, die ich von einem Temperatursensor entnehme. Der Code zum Einlesen der Sensordaten befindet sich in labeltempmod. Ich habe eine Funktion getTheTemp() erstellt, die jede Sekunde aufgerufen wird. In der Funktion versuche ich den Text des Labels per Label zu vergeben (text = (format (thetemp)), font_size = 80). Das Programm ignoriert dies. Was mache ich hier falsch?
#This is a test to see if I can write the temp to label
import labeltempmod
import kivy
from kivy.app import App
from kivy.clock import Clock
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
def getTheTemp(dt):
thetemp = labeltempmod.readtemp()
Label(text=(format(thetemp)), font_size=80)
print thetemp
class LabelWidget(BoxLayout):
pass
class labeltestApp(App):
def build(self):
# call get_temp 0.5 seconds
Clock.schedule_interval(getTheTemp, 1)
return LabelWidget()
if __name__ == "__main__":
labeltestApp().run()
Hier ist die Kivy Sprachdatei:
<LabelWidget>:
orientation: 'vertical'
TextInput:
id: my_textinput
font_size: 80
size_hint_y: None
height: 100
text: 'default'
FloatLayout:
Label:
id: TempLabel
font_size: 150
text: 'Temp Test'
Dank.
Vielen Dank, Sie wunderbare Person! Das funktioniert. Ich musste den Interessenten das Format (thetemp) hinzufügen. Der Etikettentext akzeptiert nur Zeichenfolgen. OOP ist diesem Noob etwas verwirrend. Aber ich werde weiter versuchen, es herauszufinden. – Core2
Ich verwende einen Temperatursensor, der nicht sehr präzise ist. Ich möchte einen Verzögerungsfilter erster Ordnung einführen, um die Messwerte zu glätten. Dies führt dazu, dass die alte Temperatur zurück an die Datei labeltempmod.readtemp() übergeben werden muss. Das bedeutet, dass getTheTemp (self, dt) die Temperatur zurückgeben muss. Der getTheTemp (self, dt) wird von clock.schedule aufgerufen. Wie würde ich das temp auf die Funktion __init__ zurückgeben, damit es beim nächsten Aufruf an getTheTemp gesendet werden kann, damit es an labeltempmod.readtemp (thetemp) gesendet werden kann? – Core2
@ Core2 Ich werde meine Antwort aktualisieren –