Python/Tkinter:每秒更新按钮

0 投票
1 回答
1296 浏览
提问于 2025-04-18 11:06

我想启动一个线程(虽然我对线程还不太了解),这个线程每秒钟会调用一个来自不同Python文件的函数,并把它返回的字符串设置为一个标签的文本属性。这样,标签每秒就会更新一次,显示当前的时间。我可以使用一个while True循环,但那样会阻止后面的代码运行,包括Tkinter的Tk.mainloop()。我在StackOverflow上看到很多关于这个话题的问题,但到目前为止还没有找到有效的解决方案。

有什么Python方法可以启动一个不断调用外部函数的进程吗?这个方法应该在mainloop()之前还是之后调用?mainloop()到底在做什么?Python程序在继续运行的同时,Tkinter是怎么检查事件的呢?

我使用的是Python 3.4

1 个回答

3

我会这样做。其实不,我可能会把它放进一个类里,然后创建这个类的实例,不过这样的话,我其实就是直接借用了那个问题里的内容

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()

撰写回答