在Kivy中创建动态绘制线

2024-09-28 03:18:27 发布

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

这是我这篇文章的续篇:Using and moving Widgets/Buttons in Kivy

我想在Kivy中在两个节点(椭圆)之间创建一条线,以便在移动节点时动态更新端点。以下是我目前混乱的框架:

    class GraphEdge(Widget):

        def __init__(self, **kwargs):
            super(GraphEdge, self).__init__(**kwargs)
            with self.canvas:
                Line(points=[100, 100, 200, 100, 100, 200], width=1)
        pass

我刚刚为点添加了一些占位符值,因为我甚至不知道如何开始使用应用程序中其他小部件的值。在

我的最终目标是能够选择两个节点并单击一个按钮来添加行(或更干净的内容)。我不是要别人为我制作这个,只是一些指向正确方向的建议就太棒了:)。在

更多的信息可以在链接的帖子,但我很高兴在这里,如果需要的话。在

谢谢。在

编辑:

附加信息:

我想根据某个事件更新行的位置。例如,如果我把一个椭圆移到直线上,我希望最近的边捕捉到椭圆并跟随它。在

^{pr2}$

(这只是一个糟糕的尝试,我知道它根本不起作用) 最终目标是能够将“节点”与“边”连接起来。在

编辑2:

所以我有了一些进步。我创建了一个在时钟计划中调用的更新方法:

def update(self, dt):
    # detect node collision
    self.edge.snap_to_node(self.node)


def snap_to_node(self, node):
    if self.collide_widget(node):
        print "collision detected"
        self.line.points+=node.pos

现在我想让它只更新其中一个点集(我的想法是将一个线端点捕捉到节点)。在

到目前为止,这段代码只检测行的一个点上的集合。另外的点不会检测到碰撞。在


Tags: self信息node编辑节点initdef端点
1条回答
网友
1楼 · 发布于 2024-09-28 03:18:27
Line(points=[100, 100, 200, 100, 100, 200], width=1)

^^您可以将其替换为

^{pr2}$

然后稍后只需通过执行self.line.width = 2或{}之类的操作来修改行。在

除此之外,我不知道你在问什么,你能说得更具体些吗?在

相关问题 更多 >

    热门问题