如何继续更新tkinter
画布,就像在while ( True ):
循环中一样?
我知道你可以做after( 1000 , refresh_function );
,但是如何让循环永远重复?
实际例子:一个程序在一个角度下绘制一条固定长度的线,并且角度不断增加(因此线条在旋转/旋转)。
我想我已经在这里查看了所有相关问题,但这可能仍然是重复的,如果是,我很抱歉。
答案 0 :(得分:4)
while True:
循环与使用.mainloop()
不兼容。您可以通过在退出之前重新安排自己来重复功能。其他答案中有几个例子,例如在画布上滑动。这是另一个说明这个想法。
import tkinter as tk
root = tk.Tk()
text = tk.StringVar(root)
label = tk.Label(root, textvariable=text)
label.pack()
def add_a():
text.set(text.get()+'a')
root.after(500, add_a) # <== re-schedule add_a
root.after(500, add_a) # <== start the repeating process
root.mainloop()
答案 1 :(得分:0)
也许班级threading.Timer可以帮助你
def f():
# write our code for repainting canvas
# call f() again in 60 seconds
threading.Timer(60, f).start()
# start calling f now and then every 60 sec
f()
答案 2 :(得分:-1)
要更新TKinter窗口(使用画布等),您需要root.mainloop()
,其等于:
while 1:
root.update()