python – 如何使用Tkinter创建自动更新GUI?

from Tkinter import *
import time
#Tkinter stuff

class App(object):
    def __init__(self):
        self.root = Tk()

        self.labeltitle = Label(root, text="",  fg="black", font="Helvetica 40 underline bold")
        self.labeltitle.pack()

        self.labelstep = Label(root, text="",  fg="black", font="Helvetica 30 bold")
        self.labelstep.pack()

        self.labeldesc = Label(root, text="",  fg="black", font="Helvetica 30 bold")
        self.labeldesc.pack()

        self.labeltime = Label(root, text="",  fg="black", font="Helvetica 70")
        self.labeltime.pack()

        self.labelweight = Label(root, text="",  fg="black", font="Helvetica 25")
        self.labelweight.pack()

        self.labelspeed = Label(root, text="",  fg="black", font="Helvetica 20")
        self.labelspeed.pack()

        self.labeltemp = Label(root, text="", fg="black", font="Helvetica 20")
        self.labeltemp.pack()

        self.button = Button(root, text='Close recipe', width=25, command=root.destroy)
        self.button.pack()

    def Update(self, label, change):
        label.config(text=str(change))

def main():
    app = App()
    app.mainloop()

if __name__ == "__main__":
    main()

我正在尝试创建一个配方显示,它将在Tkinter GUI的屏幕上显示步骤,指令,重量和其他变量.

但是,我不知道如何更新GUI以更改配方的每个新步骤,因为内容必须根据用户输入(从服务器获取)动态更新.如何根据步骤的变化更新GUI的其他元素?

最佳答案
您可以使用after()在(例如)1000毫秒(1秒)之后运行函数来执行某些操作并更新标签上的文本.此功能可以在1000毫秒后再次(并再次)运行.

这是当前时间的例子

from Tkinter import *
import datetime

root = Tk()

lab = Label(root)
lab.pack()

def clock():
    time = datetime.datetime.now().strftime("Time: %H:%M:%S")
    lab.config(text=time)
    #lab['text'] = time
    root.after(1000, clock) # run itself again after 1000 ms

# run first time
clock()

root.mainloop()

顺便说一句:您可以使用StringVar作为sundar nataraj Сундар建议

转载注明原文:python – 如何使用Tkinter创建自动更新GUI? - 代码日志