在 Tkinter 中绘制和清除多行
Drawing and Clearing several lines in Tkinter
所以我正在为 Python 中的旅行商问题开发一种遗传算法,目前正在使用 Tkinter 来显示我的结果。该算法运行良好,但我需要找出显示结果的一些问题。
基本上,我让它生成一组随机点并将它们显示在 window 中,然后当我有了它 运行 解决方案时,它会创建连接所有点的最佳线它在一组(或 "generation")订单中找到的订单。从那里,它应该可以选择生成下一代,清除所有当前线,使点可见,然后根据下一代的最佳解决方案绘制新线。但是,目前我无法确定清除线条而不清除点的最佳方法。
这是我用来生成线条的代码:
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' 代表我的 canvas 而 'numCities' 是在 window 中分配的一个值,以确定要创建多少个点。我计划将线条的清除与按下按钮时将调用的函数联系起来。
对于实现我在这里尝试做的事情的最佳方式有什么建议吗?即使它需要重组我的线路生成工作方式,我也愿意做任何事情。
不确定这是否是您想要的,您没有显示足够的代码。
将行添加到列表中,然后您可以在其他时间删除列表中的项目。
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)
所以我正在为 Python 中的旅行商问题开发一种遗传算法,目前正在使用 Tkinter 来显示我的结果。该算法运行良好,但我需要找出显示结果的一些问题。
基本上,我让它生成一组随机点并将它们显示在 window 中,然后当我有了它 运行 解决方案时,它会创建连接所有点的最佳线它在一组(或 "generation")订单中找到的订单。从那里,它应该可以选择生成下一代,清除所有当前线,使点可见,然后根据下一代的最佳解决方案绘制新线。但是,目前我无法确定清除线条而不清除点的最佳方法。
这是我用来生成线条的代码:
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' 代表我的 canvas 而 'numCities' 是在 window 中分配的一个值,以确定要创建多少个点。我计划将线条的清除与按下按钮时将调用的函数联系起来。
对于实现我在这里尝试做的事情的最佳方式有什么建议吗?即使它需要重组我的线路生成工作方式,我也愿意做任何事情。
不确定这是否是您想要的,您没有显示足够的代码。 将行添加到列表中,然后您可以在其他时间删除列表中的项目。
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)