自定义可视化编程环境的基础
qt-dataflow的Python项目详细描述
此包试图提供用于构建自己的组件 可视化编程环境。作者的目的是 他的同事可以使用的数据分析工具 了解编程或python。
因为标准的GUI不是非常灵活,所以该项目尝试 在可视化画布上定义和修改数据流。 扩展性是通过简单地添加或修改节点来实现的。
这个项目的灵感来自橙色-在那里我没有看到一个简单的方法 使用canvas部分(还有:许可证差异)。同时设计尝试 更加灵活。
要求
它是用Python2.7制作的。未测试较低版本或 python 3(欢迎使用补丁程序)。它应该和Pyside和Pyqt一起工作, 但目前,需要手动更改导入。
- 示例可能有其他要求:
- 努比
- matplotlib
- PyqtGraph
示例
请参阅example.py,以获取一个使用对双击作出反应的图标的简单示例。 从一个节点到另一个节点进行连接 (仅允许输出->;输入)。
- 示例小部件直接在画布上使用小部件,它还实现 一个简单的回调。请注意在更改 微调框值。
- 示例_pyqtgraph还需要pyqtgraph包。它直接绘制在 帆布。
- 在画布上使用matplotlib也可以,但是通过 临时文件。
代码示例
要创建自定义节点,需要对节点进行子类划分。它必须回来 通过其“get-view”方法的nodeview。下面的例子 实现生成随机数的节点。
classRandomNumber(Node):""" A test node which outputs a random number. Widget allow to set the number. """def__init__(self):super(DataGenNode,self).__init__()#Node type/nameself.node_type='Random Array'#Icon_path is needed for the PixmapNodeViewself.icon_path='icons/onebit_11.png'#The makes the node have an output terminal.self.generates_output=Truedefget_view(self):returnPixmapNodeView(self)defget(self):#Method which can be called by other nodes. The name is just#a convention.num=[random.random()foriinrange(self.num_points)]returnnumdefshow_widget(self):#Method called by double clicking on the icon.int,ok=Qt.QtGui.QInputDialog.getInteger(None,'Input Dialog','Number of Points',self.num_points)ifok:self.num_points=int
节点将其连接保存在node.in_conn和node.out_conn中。 注意,每个节点视图都必须是qgraphicsitem和node view的子视图。
结构
在模型中找到了基本节点类和模式类。看来是有些 查看可用。gui包含一些附加的现成元素。
待办事项
- 添加不同的图标(简单)
- 更好的工具栏(拖放就更好了)
- 测试持久性,如果pickling不起作用,则定义一个稳定的协议
- 以较少的要求为例。
- 检查并引入连接类型
- 移动一些允许或拒绝连接的逻辑 从SchemaView到NodeView。
- 检查并改进与不同python版本的兼容性。
- 更好的文档
- 使端子数量可变。
- …
编码方式
这个项目试图遵循PEP8。