Python / Tkinter:每秒更新一次按钮

时间:2014-06-25 22:59:41

标签: python tkinter python-multithreading

我正在尝试启动一个线程(不了解线程是什么),它将每秒从不同的python文件调用一个函数,并将标签的text属性设置为它返回的str。结果将是一个标签,每秒更新一次以显示当前时间。我可以使用while True循环,但这会阻止成功的代码运行,包括Tkinter的Tk.mainloop()。我已经在SO上看到了很多关于这个主题的问题,但到目前为止还没有得到任何解决方案。

什么python方法可以启动一个不断调用外部函数的进程?这应该在mainloop()之前还是之后? mainloop()循环究竟在做什么? python程序继续以某种方式Tkinter仍能检查事件?

运行Python 3.4

1 个答案:

答案 0 :(得分:3)

我就是这样做的。嗯,不,我可能将它包装成一个类并实例化该类,但我真的只是从the linked question

中窃取整个布料
import tkinter as tk
import customfunc

def run():
    root = tk.Tk()
    s_var = tk.StringVar()
    tk.Label(root, textvariable = s_var).pack()

    def update_time():
        s_var.set(customfunc.func())
        root.after(1000, update_time)

    update_time()
    root.mainloop()

if __name__ == "__main__":
    run()