如何使用Tkinter保持刷新画布?

时间:2016-01-01 21:44:59

标签: python canvas tkinter

如何继续更新tkinter画布,就像在while ( True ):循环中一样?

我知道你可以做after( 1000 , refresh_function );,但是如何让循环永远重复?

实际例子:一个程序在一个角度下绘制一条固定长度的线,并且角度不断增加(因此线条在旋转/旋转)。

我想我已经在这里查看了所有相关问题,但这可能仍然是重复的,如果是,我很抱歉。

3 个答案:

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