将画布分为多个区域,然后将附近的物品吸引到最近的区域?

时间:2019-06-04 15:51:27

标签: python tkinter tkinter-canvas

我正在使用python tkinter创建GUI以可视化道路场景(主要车辆和车辆附近)。我在画布上画线以给出道路俯视图(如下图所示)。 用户可以插入一个矩形(车辆),然后在画布上自由移动它。

我想要的是:用户将矩形移动到所需位置后,矩形的y坐标将重新定位到最近的车道,以使png的末尾看起来很漂亮。

我的想法:

  1. 将画布划分为区域(每个区域代表一个车道)
  2. 创建一个知道矩形何时完成移动的函数,然后将其y坐标修改为最近的Region(车道)。

虽然不确定如何在代码中应用它。非常感谢任何有用的画布功能或其他方法。

1 个答案:

答案 0 :(得分:0)

我在问题中提到的方法对我有用。

  1. 已创建一个列表,用于标识每个区域的y轴侧。
  2. 创建所需的项目后,它们都共享一个公共标签。
  3. 选择要考虑原始点的项目的哪一部分(稍后将用作项目的当前位置)。 Canvas.bboc(CURRENT)足以做到这一点。
  4. 通过比较项目的当前位置是否在区域的边界内来检测项目何时进入区域。
  5. 使用Canvas.coords()或Cancas.move()方法将条目移动到输入的重排中间。