• Stars
    star
    149
  • Rank 247,849 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ”€ Node graph visualization and editing with PySide.

qtnodes

Node graph visualization and editing with PySide.

Very WIP right now, the goal is to have a bunch of premade components that make it easy to implement a node graph to store and modify arbitrary data.

The UI part is coming along nicely, but no actual data handling is attached to it yet.

UI Example

Although this graph makes no sense, it shows the current look and feel:

Code Example

from PySide import QtGui
from qtnodes import (Header, Node, InputKnob,
                     OutputKnob, NodeGraphWidget)

class Multiply(Node):

    def __init__(self, *args, **kwargs):
        super(Multiply, self).__init__(*args, **kwargs)
        self.addHeader(Header(node=self, text=self.__class__.__name__))
        self.addKnob(InputKnob(name="x"))
        self.addKnob(InputKnob(name="y"))
        self.addKnob(OutputKnob(name="value"))

app = QtGui.QApplication([])
graph = NodeGraphWidget()
graph.registerNodeClass(Multiply)
graph.addNode(Multiply())
graph.show()
app.exec_()

Usage

To start a small demo:

$ python -m qtnodes

You can load example .json files from examples/.

Scene

  • Pan the viewport: Hold the middle mousebutton and drag.
  • Zoom the viewport: Use the mouse wheel.
  • Save scene to file: Rightclick > Scene > Save As...
  • Load scene from file: Rightclick > Scene > Open File...
  • Merge scene from file: Rightclick > Scene > Merge File...
  • Clear complete scene: Rightclick > Scene > Clear Scene
  • Hold scene state: Rightclick > Scene > Hold
  • Fetch scene state: Rightclick > Scene > Fetch
  • Autolayout scene: Rightclick > Scene > Auto Layout

Please note: The automatic layout needs graphviz, which means its dot command must be on PATH.

Nodes

  • Select a node: Leftclick its header.
  • Select multiple nodes: Leftclick and drag a rectangle over the nodes, release to select.
  • Create a node: Rightclick > Nodes, choose a node type.
  • Move a node: Leftclick and drag its header.
  • Delete a node: Select it then press DELETE.
  • Create a connection: Hover over a knob, then leftclick and drag to another knob. You can only connect inputs to outputs and vice versa.
  • Remove a connection: Hold ALT (on Windows, use CTRL on Linux/MacOs), the connections turn red, click one to remove it.

Credits

This started as a port of the original Qt/C++ tool qnodeseditor by Stanislaw Adaszewski, see:

http://algoholic.eu/qnodeseditor-qt-nodesports-based-data-processing-flow-editor/

Additional sources and inspirations:

License

MIT, see LICENSE.txt

More Repositories

1

payshare

๐Ÿ’ต โœ‚๏ธ Track shared expenses in a group of people
Python
184
star
2

sublime3dsmax

๐Ÿ“ž MAXScript support and remote code execution in 3ds Max from Sublime.
Python
77
star
3

imagecomphelper

โœ๏ธ Image composition utility to frame camera shots in 3ds Max.
MAXScript
24
star
4

interactive-universal-renamer

๐Ÿ–Š๏ธ Renaming script for 3ds Max
MAXScript
9
star
5

maxtest

๐Ÿ“ˆ MAXScript unittesting framework.
MAXScript
8
star
6

maxjob

๐Ÿ“ข Whiteboxed maxscript execution from the commandline.
Python
5
star
7

convict_conditioning_training

๐Ÿ’ช Progress tracker for the convict-conditioning exercises by Paul Wade
Elm
4
star
8

mxs_types

๐Ÿ“š MAXScript datatypes for convenient development.
Groff
4
star
9

steamwhat

๐Ÿš‚ Tells you which games are shared between multiple Steam users.
HTML
3
star
10

vscode-toggle-max-editor

TypeScript
2
star
11

catflap

Where is my cat? ๐ŸŒณ ๐Ÿ˜บ ๐Ÿšช
Python
2
star
12

hunt_showdown_outfitter

๐Ÿค ๐ŸŽ›๏ธ Manage and equip loadouts for Hunt: Showdown via UI automation
HTML
2
star
13

hunt_showdown_trait_presets

Python
2
star
14

cbuelter-website

Python
1
star
15

voice_to_text

๐Ÿ“ข ๐Ÿ“„ Transcribe shared voice messages using openai/whisper
Python
1
star
16

vscode-list-opened-files-as-text

TypeScript
1
star
17

booksread

Python
1
star
18

vscode-toggle-nested-html-comments

Like Toggle Line Comment, but preserves nested HTML comments
TypeScript
1
star
19

yt2web

Cache a playlist with a minimal player interface
HTML
1
star
20

the-people-around-you

Vue
1
star
21

weeklygoal

๐Ÿ“† Weekly activity goal tracker
Python
1
star
22

gamedoodle

๐ŸŽฎ โ˜‘๏ธ Web app to vote on games to play
Python
1
star
23

fritzbox-thermostat-triggers

Python
1
star
24

slbsl

๐Ÿ“Ž Convert paths from Windows to UNIX and vice versa.
Python
1
star
25

fritzbox_thermostats

๐Ÿ”ฅ โ›„ Define rules to control the radiators
Python
1
star
26

idaho-journal

๐Ÿ“™ My own private journal
TypeScript
1
star
27

pacer

Android application to calculate distance, time, speed and pace for runners.
Java
1
star