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()
,但这些似乎都不起作用。
答案 0 :(得分:0)
更新不会删除任何内容,它只会导致执行任何待处理事件(包括请求刷新屏幕的事件)。您必须使用delete
方法删除画布项目。