https://github.com/spatialgraphics/spatialnode
Qt Node Editor. Dataflow programming framework for pyside6
https://github.com/spatialgraphics/spatialnode
dataflow graph node-editor pyside6 python3 qt6
Last synced: 9 months ago
JSON representation
Qt Node Editor. Dataflow programming framework for pyside6
- Host: GitHub
- URL: https://github.com/spatialgraphics/spatialnode
- Owner: SpatialGraphics
- License: mit
- Created: 2024-03-01T00:06:12.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-25T02:47:56.000Z (over 1 year ago)
- Last Synced: 2025-03-23T12:11:16.780Z (9 months ago)
- Topics: dataflow, graph, node-editor, pyside6, python3, qt6
- Language: Python
- Homepage: https://pypi.org/project/SpatialNode/
- Size: 1.11 MB
- Stars: 6
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SpatialNode
[](https://github.com/psf/black)
[](https://github.com/SpatialForce/SpatialNode/actions/workflows/python-publish.yml)
## Introduction
**SpatialNode** is conceived as a general-purpose Qt-based library aimed at
developing Node Editors for various applications. The library could be used for
simple graph visualization and editing or extended further for using the
[Dataflow paradigm](https://en.wikipedia.org/wiki/Dataflow_programming) .
The library is written using the Model-View approach. The whole graph structure
is defined by a class derived from ``AbstractGraphModel``. It is possible to
create or add Nodes and Connections. The underlying data structures could be of
any arbitrary type or representation.
An instance of ``AbstractGraphModel`` could or could not be attached to
specialized ``QGraphicsScene`` and ``QGraphicsView`` objects. I.e. the so-called
"headless" `modus operandi` is possible.

## Data Flow Paradigm
The extended model class ``DataFlowGraphModel`` allows to register "processing
algorithms" represented by nodes and is equipped with a set of Qt's signals and
slots for propagating the data though the nodes.
The node's algorithm is triggered upon arriving of any new input data. The
computed result is propagated to the output connections. Each new connection
fetches available data and propagates is further. Each change in the source node
is immediately propagated through all the connections updating the whole graph.
## Acknowledge
This project is forked form [nodeeditor](https://github.com/paceholder/nodeeditor) originally but rewrite to pure python
project, which can integrate with python package well.