节点编辑器

节点编辑器显示可编辑的原理图或图表,显示节点及其属性之间的连接。它允许您查看、修改和创建新的节点连接。

您可以在下面看到一个示例

https://raw.githubusercontent.com/Nelarius/imnodes/master/img/imnodes.gif?token=ADH_jEpqbBrw0nH-BUmOip490dyO2CnRks5cVZllwA%3D%3D

它有4个主要组成部分

  1. 节点编辑器 -节点所在的区域

  2. 节点 -包含属性的自由浮动“窗口”

  3. 属性 -带有Pins的小部件集合,用于创建指向/来自的链接。

    可以是输入、输出或静态。

  4. 链接 -属性之间的连接

属性可以包含任何UI项。当用户单击并拖动节点的属性时,将运行节点编辑器的回调。DPG将属性的标记通过 _app_data_ 回调的参数。

开发人员有责任创建该链接。

下面是一个基本的例子。您可以抓住输出引脚并将其连接到输入引脚。您可以通过以下方式分离链接 ctrl 单击并拖动该链接。

Code

import dearpygui.dearpygui as dpg

dpg.create_context()

# callback runs when user attempts to connect attributes
def link_callback(sender, app_data):
    # app_data -> (link_id1, link_id2)
    dpg.add_node_link(app_data[0], app_data[1], parent=sender)

# callback runs when user attempts to disconnect attributes
def delink_callback(sender, app_data):
    # app_data -> link_id
    dpg.delete_item(app_data)

with dpg.window(label="Tutorial", width=400, height=400):

    with dpg.node_editor(callback=link_callback, delink_callback=delink_callback):
        with dpg.node(label="Node 1"):
            with dpg.node_attribute(label="Node A1"):
                dpg.add_input_float(label="F1", width=150)

            with dpg.node_attribute(label="Node A2", attribute_type=dpg.mvNode_Attr_Output):
                dpg.add_input_float(label="F2", width=150)

        with dpg.node(label="Node 2"):
            with dpg.node_attribute(label="Node A3"):
                dpg.add_input_float(label="F3", width=200)

            with dpg.node_attribute(label="Node A4", attribute_type=dpg.mvNode_Attr_Output):
                dpg.add_input_float(label="F4", width=200)

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

选择查询

您可以检索选定的节点和链接(并使用以下命令清除此选择)

dpg.get_selected_nodes(editor_id)
dpg.get_selected_links(editor_id)
dpg.clear_selected_nodes(editor_id)
dpg.clear_selected_links(editor_id)

节点属性类型

以下常量可用于 attribute_type 节点属性的参数

属性

mvNode_Attr_Input (默认)

mvNode_Attr_Output

mvNode_Attr_Static

节点属性管脚形状

以下常量可用于 shape 节点属性的参数

形状

mvNode_PinShape_Circle

mvNode_PinShape_CircleFilled (默认)

mvNode_PinShape_Triangle

mvNode_PinShape_TriangleFilled

mvNode_PinShape_Quad

mvNode_PinShape_QuadFilled

关联项目

  • mvNode

  • mvNodeAttribute

  • mvNodeLink