Skip to main content

nodeeditor-qtpy

A node editor framework for Qt. Build interactive graph interfaces out of draggable nodes, connectable sockets and edges, with undo/redo, JSON serialization and support for your own evaluation logic.

The distribution is called nodeeditor-qtpy; the import package is nodeeditor. The framework itself is binding-agnostic: it talks to Qt through QtPy, so it runs on PyQt5, PySide2, PyQt6 and PySide6.

Calculator example

Features

  • full framework for customizable nodes, sockets and edges
  • undo / redo and serialization into JSON files in a VCS friendly way
  • support for implementing evaluation logic
  • hovering effects, dragging edges, cutting lines, snapping and more
  • node groups, multi-input nodes, custom socket shapes and color schemes
  • ready-made examples you can copy from

Requirements

  • Python 3.10+
  • A Qt binding: PyQt6 or PySide6 (any Qt 5/6 binding QtPy supports works)

Installation

From PyPI, including a Qt binding:

pip install nodeeditor-qtpy[pyqt6]

or, for PySide6:

pip install nodeeditor-qtpy[pyside6]

Without an extra, the package installs no binding and uses whichever PyQt5/PySide2/PyQt6/PySide6 you already have. When several are installed, QtPy picks one from the QT_API environment variable.

Directly from source code to get the latest version:

pip install "nodeeditor-qtpy[pyqt6] @ git+https://github.com/AzadKshitij/qtpy-nodeeditor.git"

Or clone the repository:

git clone https://github.com/AzadKshitij/qtpy-nodeeditor.git

Quick start

A node is a Node belonging to a Scene. Give it sockets, then connect an output socket to an input socket with an Edge:

import sys

from qtpy.QtWidgets import QApplication

from nodeeditor.node_editor_widget import NodeEditorWidget
from nodeeditor.node_node import Node
from nodeeditor.node_edge import Edge

app = QApplication(sys.argv)

editor = NodeEditorWidget()
scene = editor.scene

# a node with one output socket
source = Node(scene, title="Value", outputs=[1], output_text=["out"])

# a node with one input socket
sink = Node(scene, title="Print", inputs=[1], input_text=["in"])

# connect the output of the first node to the input of the second
Edge(scene, source.outputs[0], sink.inputs[0])

editor.show()
sys.exit(app.exec())

NodeEditorWidget creates the Scene for you. Use Scene on its own when you want to drive the graph without a widget:

from nodeeditor.node_scene import Scene
from nodeeditor.node_node import Node

scene = Scene()
node = Node(scene, title="Value", outputs=[1], output_text=["out"])

The inputs and outputs lists hold socket types, and the matching input_text / output_text lists hold the labels drawn next to them. Both Node and Edge register themselves with the scene when created, so there is nothing to add by hand.

Import names

from nodeeditor import NodeEditorColorScheme, get_socket_shape
from nodeeditor.node_scene import Scene
from nodeeditor.node_node import Node
from nodeeditor.node_edge import Edge

Credits

This project is a fork of the original PyQt Node Editor by Pavel Křupala, which is released under the MIT licence. The original author is credited in LICENCE, and the history of the upstream project is kept in CHANGES.md and HISTORY.rst.

Metadata

Release files for nodeeditor-qtpy 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nodeeditor-qtpy 0.8.1
File Size Uploaded Provenance
nodeeditor_qtpy-0.8.1.tar.gz 448.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nodeeditor-qtpy 0.8.1
File Interpreter ABI Platform
nodeeditor_qtpy-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 574.0 kB

Release files / nodeeditor_qtpy-0.8.1.tar.gz

Download URL nodeeditor_qtpy-0.8.1.tar.gz
Size 448.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b97f5d61e6bb4647697d9e9bab033e5ad5513f6aac4ea1d00a34ac86002d30c5
BLAKE2b-256 checksum
How to use checksums
a7e4d6446c089da5e7d5485a59746b102c99585d719508d831dd731f87b13a84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Release files / nodeeditor_qtpy-0.8.1-py3-none-any.whl

Download URL nodeeditor_qtpy-0.8.1-py3-none-any.whl
Size 125.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be9cea0755def71a4647e6c3632a0497a006804f160b4cc46f22f46949296f33
BLAKE2b-256 checksum
How to use checksums
685ec3d5c3e94baa6d8f8044cb0ed6aa1aec6297387b8afb9d5ad317b354a1ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Security for nodeeditor-qtpy 0.8.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nodeeditor_qtpy-0.8.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page