Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

vfxpipeline/NodeGraphQt

Open more actions menu
 
 

Repository files navigation

NodeGraphQt

License: MIT python 3.7+ PEP8 stability-wip

(Note: this project is a work in progress and not production ready.)


NodeGraphQt is a node graph framework for PySide2 that can be implemented and re-purposed into applications.

API Documentation

https://jchanvfx.github.io/NodeGraphQt

Navigation

action controls
Zoom in/out Alt + MMB Drag or Mouse Scroll Up/Down
Pan Alt + LMB Drag or MMB Drag
Node search Tab

Slice Connections

action controls
Slice Connections Shift + Alt + LMB Drag

Vertical Layout

Pipe Layout

Widgets

Example

import sys

from NodeGraphQt import QtWidgets
from NodeGraphQt import NodeGraph, BaseNode, BackdropNode, setup_context_menu

# create a example node object with a input/output port.
class MyNode(BaseNode):
    """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', color=(180, 80, 0))
        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(BackdropNode)
   
    # register example node into the node graph.
    graph.register_node(MyNode)
   
    # create nodes.
    node_a = graph.create_node('com.chantasticvfx.MyNode', name='Node A')
    node_b = graph.create_node('com.chantasticvfx.MyNode', name='Node B', color='#5b162f')
    backdrop = graph.create_node('nodeGraphQt.nodes.Backdrop', name='Backdrop')
    
    # wrap "backdrop" node around "node_a" and "node_b"
    backdrop.wrap_nodes([node_a, node_b])

    # connect "node_a" input to "node_b" output.
    node_a.set_input(0, node_b.output(0)) 

    # auto layout nodes.
    graph.auto_layout_nodes()

    # show the node graph widget.
    graph_widget = graph.widget
    graph_widget.show()

    app.exec_()

About

Node graph framework that can be re-implemented into applications that supports PySide2 or PyQt5

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.