乐于分享
好东西不私藏

比写代码更爽!这个开源低代码节点编辑器,拖拖拽拽就把程序跑起来了

比写代码更爽!这个开源低代码节点编辑器,拖拖拽拽就把程序跑起来了

说实话,第一次看到NodeEditor这个项目的时候,我还以为又是什么花里胡哨的玩具。但仔细一琢磨——嘿,这玩意儿还真有点东西。

你可能听说过UE4的蓝图、Blender的材质节点,或者最近很火的AI绘画工作流节点编辑器。它们背后的思路其实是一样的:把代码逻辑变成一个个可视化的“积木”,你只需要拖拖拽拽、连几根线,就能搭出一套可执行的程序。NodeEditor干的就是这事儿。

它到底能干啥?

简单来说,NodeEditor是一个多用途的节点编辑器,专门给“流式编程”准备的。什么叫流式编程?就是数据像水流一样,从一个节点流到另一个节点,每个节点负责处理一小块功能。

比如图像处理:你放一个“读取图片”节点,再拖一个“高斯模糊”节点,把前者的输出口连到后者的输入口,哎,这就算搭完了。改改参数,立马能看到效果。不用写一长串函数调用,不用调试地狱般的回调,就靠鼠标点一点。

它内置了几种图像处理节点当示例,但真正的杀手锏是——你可以随意扩展自己的节点类型。怎么扩?写一个JSON文件就行。

{
"node_type":"GaussianBlurNode",
"input_ports":[{"port_name":"image","data_type":"image_t"}],
"output_ports":[{"port_name":"blurred","data_type":"image_t"}],
"default_settings":{"sigma":1.0}
}

看懂没?定义输入输出是啥类型,再加几个默认参数,完事儿。然后它就能出现在你的节点面板里,任你拖拽使用。

执行子系统?随便换!

有个很骚的设计——它的执行引擎不是写死的。你完全可以把自己的执行逻辑塞进去,只要能读懂它导出的.graph.json格式就行。

项目本身带了一个执行子系统,但人家说了:你想换就换,不拦着。这就好比乐高积木,底座是通用的,上面的齿轮电机你爱用哪家用哪家。

输出的文件分两种:

  • • .nes文件:保存整个场景,包括节点位置、连线、面板设置、视口状态……就是给你下次打开继续编辑用的。
  • • .graph.json文件:只保存节点、连线和节点的参数值,纯粹是给执行引擎吃的。这个格式是轻量的,适合丢给后端跑。

怎么上手?别怕,几步搞定

依赖就俩:Anaconda(或者Miniconda),Windows用户再装个Inno Setup用来生成安装包。然后打开命令行:

conda env create -f environment.yml   # 建个叫editor的环境
conda activate editor                  # 激活它

接着装一个叫randomname的小库——注意得用作者fork的版本,原版打包时会报错(这种坑做开源谁没踩过呢)。克隆下来,python setup.py install就完事儿。

最后跑打包脚本,Windows是.\pack.bat,Linux/macOS是./pack-ubuntu.sh。等几分钟,dist文件夹里就会出现可执行文件。Windows下甚至还有个安装程序,双击就能装。

说点大实话

这个项目基于Pavel Křupala的pyqt-node-editor改造的,代码里还混了个修改版的PyQJsonModel。原项目其实挺早了,这个fork做了不少现代化的适配,比如用PyInstaller打包、改进了节点类型定义的加载方式。

缺点也得提一嘴:目前内置的节点类型太少了,就几个图像处理的。你要是想搞音频、数据流、自动化任务,全都得自己写JSON定义。好消息是门槛不高,坏消息是得自己动手。另外文档不算特别详尽,有些地方得翻源码——不过话说回来,两千多行的Qt应用,结构还算清晰。

适合谁玩呢?想做可视化编程工具的程序员还在纠结“怎么把复杂流程简易化”的架构师、或者单纯想学学PyQt图形拖拽交互的爱好者。说实话,拿来改吧改吧,做成你自己的AI工作流编辑器、游戏能力编辑器,完全不是梦。

对了,整个项目是MIT许可证,随便用随便改,连保留版权声明的义务都很宽松。作者是真的在让你拿去赚钱。

项目地址:https://github.com/beyse/NodeEditor