Forum >> Programmazione Python >> GUI >> Aggiornare temperatura con tkinter

Pagina: 1

Ciao sono nuovo e uso python da qualche settimana. Non riesco ad aggiornare una label in tempo reale. Qualcuno può aiutarmi?
questo è il code

import os
import time
#Importare Tkinter
from Tkinter import *
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

temp_sensor1 = "/sys/bus/w1/devices/28-04168237e1ff/w1_slave"
temp_sensor2 = "/sys/bus/w1/devices/28-03168187a7ff/w1_slave"


def temp_raw1():
    f = open(temp_sensor1, 'r')
    lines = f.readlines()
    f.close()
    return lines


def read_temp1():
    lines = temp_raw1()
    while lines0.strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = temp_raw1()
    temp_output1 = lines1.find('t=')
    if temp_output1 != -1:
        temp_string = lines1.strip()[temp_output1 + 2:]
        temp_c = float(temp_string) / 1000.0
        return temp_c



root = Tk()
root.title("Primo Programma")
root.geometry("300x300+200+200")
root.resizable(False, False)
lb=Label(root,text =read_temp1)
lb.pack()
root.mainloop()


Non entro nel merito della funzione read_temp1 che è sicuramente sbagliata (ad esempio lines1 e lines0 non sono definite e la funzione può ritornare None invece di un float), ma per eseguire cose ciclicamente con tk si usa il metodo after (in questo caso si attiva circa una volta al secondo):
def recall():
    lb.configure(text=read_temp1())
    root.after(1000, recall)

root = Tk()
root.title("Primo Programma")
root.geometry("300x300+200+200")
root.resizable(False, False)
lb = Label(root)
lb.pack()
recall()
root.mainloop()

*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Grazie funziona perfettamente.

per quanto riguarda lo script l'ho praticamente copiato dal web perché volevo sfruttare il raspberry per avere una piccola interfaccia dove si visualizzano delle temperature con dei sensori dallas 1wire sparsi per la casa. grazie ancora


Pagina: 1



Esegui il login per scrivere una risposta.