【问题标题】:Drawing and Clearing several lines in Tkinter在 Tkinter 中绘制和清除几行
【发布时间】:2019-11-27 23:39:00
【问题描述】:

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

对于实现我在这里尝试做的最佳方式的任何建议?即使它需要重组我如何让线路生成工作,我也愿意做任何事情。

【问题讨论】:

    标签: python tkinter tkinter-canvas traveling-salesman


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多