在GUI中显示DHT11的温度 - 自动刷新?

时间:2016-06-06 21:48:05

标签: python tkinter

新手到Python,开始搞乱DHT11温度/湿度传感器,Raspberry Pi 3和Python 3。

我正在使用Python的标准Adafruit DHT11 Library

从GPIO 27阅读

我可以在GUI窗口中显示温度。我所坚持的是如何让GUI以设定的速率更新/刷新温度,这样它就是一个" live"显示当前温度。现在,如果我关闭并重新打开脚本,我只能从GUI获得更改。请参阅下面的代码:

    from tkinter import *
    import tkinter.font
    import Adafruit_DHT

    temp = 0

    win = Tk()
    win.title("Temperature")
    win.geometry("100x100")

    def READ():
        global temp
        humidity, temperature = Adafruit_DHT.read_retry(11, 27)
        temp = temperature * 9/5.0 + 32
        Label (win, text=str(temp), fg="black", bg="white", font="36").grid(row=0, column=0)

    if (temp >= 0):
        READ()

    mainloop()

1 个答案:

答案 0 :(得分:1)

在程序开始时创建Label一次,并保存引用:

the_label = Label (win, text="", fg="black", bg="white", font="36")
the_label.grid(row=0, column=0)

接下来,创建一个获取值并更新标签的函数:

def READ():
    global temp
    humidity, temperature = Adafruit_DHT.read_retry(11, 27)
    temp = temperature * 9/5.0 + 32
    the_label.configure(text=str(temp))

接下来,创建一个调用此函数的新函数,然后调度自己在延迟后再次调用:

def read_every_second():
    READ()
    root.after(1000, read_every_second)

最后,在程序开始时调用read_every_second一次。然后它将一直运行,直到您的程序退出。