在绘制新行时,tk.update()不会删除上一行

时间:2015-07-04 20:11:44

标签: python tkinter

from Tkinter import *
import math
tk=Tk()
canvas=Canvas(tk,width=810,height=600)
canvas.pack()

glass_parameters = [-200, 200]
glass_length = 1000
i_ray_start = 50
i_ray_end = 410
refractive_index = 1.5
angle = 0

def incident_ray(y1):
    angle1 = math.radians(angle)
    tangent_angle = math.tan(angle1)
    if angle >= 90:
        x1 = 0
    else:
        x1 = (glass_parameters[1]-y1)/tangent_angle
    canvas.create_line(i_ray_end-x1, y1, i_ray_end, glass_parameters[1])

def increase_incident_angle():
    global angle
    angle +=1
    tk.update()
    incident_ray(i_ray_start)

调用increase_incident_angle()函数时,我的程序会按预期绘制一个新行。唯一的问题是tk.update()不会删除旧行。我试过tk.update_idletasks(),但这些似乎都不起作用。

1 个答案:

答案 0 :(得分:0)

更新不会删除任何内容,它只会导致执行任何待处理事件(包括请求刷新屏幕的事件)。您必须使用delete方法删除画布项目。