这是我这篇文章的续篇: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
现在我想让它只更新其中一个点集(我的想法是将一个线端点捕捉到节点)。在
到目前为止,这段代码只检测行的一个点上的集合。另外的点不会检测到碰撞。在
^^您可以将其替换为
^{pr2}$然后稍后只需通过执行}之类的操作来修改行。在
self.line.width = 2
或{除此之外,我不知道你在问什么,你能说得更具体些吗?在
相关问题 更多 >
编程相关推荐