在Tkinter中绘制和清除多条线

问题描述 投票:0回答:1

因此,我正在开发一种遗传算法,用于解决正在使用Tkinter显示我的结果的Python中的旅行商问题。该算法进展顺利,但我需要弄清楚显示结果时遇到的一些问题。

[基本上,我让它生成一个随机的点集并将其显示在窗口中,然后当我运行该解决方案时,它会创建一条线,以所有点的最佳顺序将其连接到一条线中(或“ “)的订单。从那里,它应该可以选择生成下一代,该世代将清除所有当前线,使这些点保持可见,然后根据下一代最佳解决方案绘制新线。当前,但是我在确定清除线而不清除点的最佳方法时遇到了麻烦。

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

    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”是在窗口中分配的值,以确定要创建多少个点。我计划将行的清除与按下按钮时将要调用的函数联系在一起。

关于在这里实现我想要的最佳方法的任何建议?即使需要重组生产线的工作方式,我也无所不能。

python tkinter tkinter-canvas traveling-salesman
1个回答
1
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.