如何每2秒更新一次传感器数据的Tkinter标签

时间:2017-12-10 21:09:56

标签: python user-interface tkinter raspberry-pi3 sensor

我正在尝试使用" x"的值来更新Tkinter中的标签。因为每次" x"改变价值。几乎像一个活的柜台。 这是一个简化的循环,因为我正在研究Pycharm。最后,我想修改此代码,以便使用连接到我的Raspberry Pi的温度传感器的值更新标签。 请对此主题提供一些帮助,谢谢:)

from Tkinter import *
import tkFont
import time

# Window
root = Tk()
root.geometry("700x600+550+100")

# Font
font = tkFont.Font(family = 'Halvetica', size = 36, weight = 'bold')

x = 0

def do():
    list = [1, 2, 3, 4]
    for x in list:
        temp = Label(root, text=x, fg="black", heigh=2, width=15, font=font)
        temp.pack()
        time.sleep(2)
        #temp["text"] = x


do()

root.mainloop()

我希望程序打印1,然后用2替换1,依此类推。我不希望1,2,3,4一起出现。

当我执行代码时,它会向我显示数字1到4,但它没有实时更新它们并且它们在彼此之下,这不是我想要的

1 个答案:

答案 0 :(得分:0)

在您的代码中,完全呈现1,2,3,4,因为您每次创建for循环时都会创建一个新标签,并在temp范围内调用它do迭代。相反,你应该制作一个标签并更新它的文字,如:

temp = tkinter.Label(...)

for(...):
    temp['text'] = "Updated String Here"

此外,如果您使用time.sleep,它也可以让您的整个GUI处于休眠状态,请尝试使用可用于tkinter小部件的after方法,例如:

root.after(1000, callback_func)

每隔callback_func毫秒就会调用1000