首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Tkinter中绘制和清除几条线

在Tkinter中绘制和清除几条线
EN

Stack Overflow用户
提问于 2019-11-28 07:39:01
回答 1查看 68关注 0票数 0

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

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

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

代码语言:javascript
运行
复制
    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’是在窗口中指定的值,用于确定要创建的点的数量。我计划将行的清除绑定到一个在按下按钮时将被调用的函数。

有什么建议是实现我想要做的事情的最好方法吗?即使这需要重新调整我如何让行生成工作,我也愿意做任何事情。

EN

Stack Overflow用户

回答已采纳

发布于 2019-11-28 07:50:44

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

代码语言:javascript
运行
复制
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)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59079870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档