通过拖动从椭圆形到另一个椭圆形创建一条线

Create a line from an oval to another by dragging

我正在做一个代表友谊网络的项目。我用椭圆代表朋友,用线条代表他们的友谊。

我已经查看了如何绑定事件,到目前为止我了解如何绑定事件:

def line(self, event):
    x1, y1 = (event.x - 1), (event.y - 1)
    x2, y2 = (event.x + 1), (event.y + 1)
    self.display_canvas.create_line(x1, y1, x2, y2, fill="black")

但这只画了一个像素的线,并且跟随鼠标的轨迹。

我想做的是创建一条直线,它也跟随鼠标直到它停在一个椭圆上,并且只有当它开始在一个椭圆上时。

看起来像这样(完全一样,只是我不能通过拖动来完成):!http://s17.postimg.org/lhveezdi7/line.png

谢谢。

<B1> 事件中,记住 x/y 坐标。在 <B1-Motion> 上,从记住的坐标到事件的坐标画一条线。在任何时间点,您都可以使用 canvas 的 find_* 函数检查坐标是否超过或接近椭圆。