Python/Tkinter:每秒更新按钮
我想启动一个线程(虽然我对线程还不太了解),这个线程每秒钟会调用一个来自不同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()