自定义可视化编程环境的基础

qt-dataflow的Python项目详细描述


此包试图提供用于构建自己的组件 可视化编程环境。作者的目的是 他的同事可以使用的数据分析工具 了解编程或python。

因为标准的GUI不是非常灵活,所以该项目尝试 在可视化画布上定义和修改数据流。 扩展性是通过简单地添加或修改节点来实现的。

这个项目的灵感来自橙色-在那里我没有看到一个简单的方法 使用canvas部分(还有:许可证差异)。同时设计尝试 更加灵活。

要求

它是用Python2.7制作的。未测试较低版本或 python 3(欢迎使用补丁程序)。它应该和Pyside和Pyqt一起工作, 但目前,需要手动更改导入。

示例可能有其他要求:
  • 努比
  • matplotlib
  • PyqtGraph

示例

请参阅example.py,以获取一个使用对双击作出反应的图标的简单示例。 从一个节点到另一个节点进行连接 (仅允许输出->;输入)。

https://github.com/Tillsten/qt-dataflow/raw/master/example.png
  • 示例小部件直接在画布上使用小部件,它还实现 一个简单的回调。请注意在更改 微调框值。
  • 示例_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。

许可证

示例图标来自http://www.icojam.com/blog/?p=177(公共域)。

BSD-3条款,见license.txt。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从类对象访问静态变量   java无法在三星A5上使用Toast(2016年)   java处理阻止图像在选择其他图像时消失   java Install4j Linux应用程序   swing在jpanel form java上具有暂停/恢复按钮   java Log4J登录年份文件夹   java XmlPullParser资源管理   JavaGoogleCloudEndpoints方法总是导致NullPointerException,为什么?   java JSON到带有POJO和Enum的Spring控制器   java制作自定义名称生成器?   java仅在设备屏幕的特定部分显示google地图多段线   java图像没有重新绘制,只是相乘   java如何将格式化字符串转换为浮点?   java无法提前很长时间安排TimerTask   当引用函数::和时,java Intellij IDEA无法解析“和”函数接口方法   java结束了dowhile循环   java Spring路径变量绑定   log4j API中FileAppender中的java问题   java使用QMessageBox从选项列表中进行选择