Python 在Tkinter中绘制和清除多条线

Python 在Tkinter中绘制和清除多条线,python,tkinter,tkinter-canvas,traveling-salesman,Python,Tkinter,Tkinter Canvas,Traveling Salesman,所以我正在用Python开发一个旅行推销员问题的遗传算法,目前使用Tkinter来显示我的结果。算法运行得很好,但我需要找出显示结果时的一些问题 基本上,我让它生成一组随机点,并在窗口中显示它们,然后当我让它运行解决方案时,它会创建一条线,将所有点以它在单个顺序集合(或“生成”)中找到的最佳顺序连接起来。从那里,它应该可以选择生成下一代,该代将清除所有当前线,使点可见,然后根据下一代的最佳解决方案绘制新线。然而,目前我很难确定在不清除点的情况下清除线的最佳方法 这是我用来生成行的代码:

所以我正在用Python开发一个旅行推销员问题的遗传算法,目前使用Tkinter来显示我的结果。算法运行得很好,但我需要找出显示结果时的一些问题

基本上,我让它生成一组随机点,并在窗口中显示它们,然后当我让它运行解决方案时,它会创建一条线,将所有点以它在单个顺序集合(或“生成”)中找到的最佳顺序连接起来。从那里,它应该可以选择生成下一代,该代将清除所有当前线,使点可见,然后根据下一代的最佳解决方案绘制新线。然而,目前我很难确定在不清除点的情况下清除线的最佳方法

这是我用来生成行的代码:

    for i in range(0, numCities-1):
        x1 = points[bestOrder[i]][0]
        y1 = points[bestOrder[i]][1]
        x2 = points[bestOrder[i+1]][0]
        y2 = points[bestOrder[i+1]][1]
        w.create_line(x1, y1, x2, y2)
在本例中,“w”表示我的画布,“numCities”是在窗口中指定的值,用于确定要创建多少点。我计划将线路的清除与按下按钮时将调用的函数联系起来


对于实现我在这里尝试的目标的最佳方式,有什么建议吗?即使需要重新构造生成行的工作方式,我也愿意做任何事情。

不确定这是否是您想要的,因为您没有显示足够的代码。 将行添加到列表中,然后您可以在其他时间删除列表中的项目

lines = []
for i in range(0, numCities - 1):
    x1 = points[bestOrder[i]][0]
    y1 = points[bestOrder[i]][1]
    x2 = points[bestOrder[i + 1]][0]
    y2 = points[bestOrder[i + 1]][1]
    lines.append(w.create_line(x1, y1, x2, y2))


for line in lines:
    w.delete(line)