NodeGraphQt is a node graph framework that can be implemented and re purposed into applications that supports PySide and PySide2.
http://chantasticvfx.com/nodeGraphQt/html/index.html
action | controls |
---|---|
Zoom in/out | Alt + MMB + Drag or Mouse Scroll Up/Down |
Pan | Alt + LMB + Drag or MMB + Drag |
Node search | Tab |
import sys
from PySide2 import QtWidgets
from NodeGraphQt import NodeGraph, Node, Backdrop, setup_context_menu
# create a example node object with a input/output port.
class MyNode(Node):
"""example test node."""
# unique node identifier domain. ("com.chantasticvfx.MyNode")
__identifier__ = 'com.chantasticvfx'
# initial default node name.
NODE_NAME = 'My Node'
def __init__(self):
super(MyNode, self).__init__()
self.add_input('foo')
self.add_output('bar')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
# create the node graph controller.
graph = NodeGraph()
# set up default menu and commands.
setup_context_menu(graph)
# register backdrop node. (included in the NodeGraphQt module)
graph.register_node(Backdrop)
# register example node into the node graph.
graph.register_node(MyNode)
# create nodes.
backdrop = graph.create_node('nodeGraphQt.nodes.Backdrop', name='Backdrop')
node_a = graph.create_node('com.chantasticvfx.MyNode', name='Node A')
node_b = graph.create_node('com.chantasticvfx.MyNode', name='Node B', color='#5b162f')
# connect node a input to node b output.
node_a.set_input(0, node_b.output(0))
# show widget.
viewer = graph.viewer()
viewer.show()
app.exec_()