情况
类似于这个问题,我正在寻找一种创建 GUI 的方法,在其中用户能够看到一个图形(在 图论 的意义上)并与之交互。车辆将按时间从一个节点移动到另一个节点。用户应该能够添加节点和边以及添加车辆并设置它们的目的地。
我已经实现了底层图模型和业务逻辑,我只需要一个 GUI。这意味着我不需要像 Dijkstra 算法这样的图算法功能。
如果可能,解决方案应该是平台无关的。底层模型是用 Python 编写的,因此 GUI 解决方案要么需要基于 Python(这将是首选),要么应该容易地与 Python 进行接口(潜在的 IPC)。
性能是一个问题。它不需要非常快,但必须足够快以跟上底层模型。理论上,图中可能存在节点、边和车辆的数量没有限制。
可能的方法
我已经研究了各种可视化库:
我正在考虑使用 OpenGL。
我想直接绘制 wxPython。
问题
我没有使用过任何图形库。我不知道它们是否能够提供所需的功能。例如,matplotlib在画廊中似乎有很多非图形理论图形。我找不到除了通过NetworkX之外还有谁实现了图形的例子。另一个例子,NetworkX是否可以绘制沿着边缘移动的对象?
使用OpenGL的解决方案几乎肯定需要更多的时间来实现。我将不得不自己编写跨越边缘移动对象的函数。我将不得不编写一个函数来正确地绘制边缘,并为所有边缘、节点和车辆等绘制标签。我需要实现菜单并从头处理交互。
我不确定如何在wxPython中实现这一点。我只知道如何与标准小部件一起使用它。 更新:我找到了this question,其中有一个答案指向wx.lib.ogl或wx.lib.floatcanvas作为在纯wxPython中实现解决方案的机制。
问题
有没有任何可视化库符合我的要求?其中哪些最适合?我是否错过了其他符合要求的库?类似于JGraph但使用Python而不是Java的库将是合适的。
您认为在OpenGL或wxPython中实现与使用这些库之一相比如何?
您认为还有其他适当的方法吗?