Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tk.update()不';绘制新直线时,不要删除上一条直线_Python_Tkinter - Fatal编程技术网

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)