Python tk.update()不';绘制新直线时,不要删除上一条直线
当调用Python tk.update()不';绘制新直线时,不要删除上一条直线,python,tkinter,Python,Tkinter,当调用增大入射角度()函数时,我的程序会按预期绘制一条新线。唯一的问题是,tk.update()不会删除旧的行。我尝试过tk.update\u idletasks(),但这两种方法似乎都不起作用。更新不会删除任何内容,它只会导致执行任何挂起的事件(包括请求刷新屏幕的事件)。你必须用delete方法删除画布项目。如果你想从画布上删除一条线,你必须删除它。啊,好吧,我想更新会删除你画的所有东西。谢谢,我找到了一个快速的方法,将tag='line'添加到create行,然后调用canvas.delet
增大入射角度()
函数时,我的程序会按预期绘制一条新线。唯一的问题是,tk.update()
不会删除旧的行。我尝试过tk.update\u idletasks()
,但这两种方法似乎都不起作用。更新不会删除任何内容,它只会导致执行任何挂起的事件(包括请求刷新屏幕的事件)。你必须用delete
方法删除画布项目。如果你想从画布上删除一条线,你必须删除它。啊,好吧,我想更新会删除你画的所有东西。谢谢,我找到了一个快速的方法,将tag='line'添加到create行,然后调用canvas.delete('line'):)帮你自己一个忙,使用一个类,你也可以回答这个问题,将它标记为solved不是它的工作原理,所以。
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)