在Tkin中绘制和清除几条线

2024-06-17 11:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有什么建议可以帮助我实现我的目标吗?即使它需要重组我如何让线生成工作,我什么都愿意


Tags: 算法顺序tkinter绘制情况解决方案points遗传算法
1条回答
网友
1楼 · 发布于 2024-06-17 11:33:08

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

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)

相关问题 更多 >