gpt4 book ai didi

python - 实现基于节点的图形界面?

转载 作者:IT老高 更新时间:2023-10-28 20:35:09 24 4
gpt4 key购买 nike

我想实现一个节点接口(interface),基本上是 DAG每个节点对其输入连接执行操作,并输出一些东西(您可以连接到另一个节点)

一些示例应用程序:


作为第一个目标,我想要一个只有 2 个节点的图形应用程序。一个“数字”,它简单地输出一个固定数字,一个“加”节点,它接受两个输入并输出两者的总和。

到目前为止,正如人们所回答的那样,我对如何在代码中表示数据有一个粗略的想法,例如在 Python 的伪代码中:

class Number:
def __init__(self, value):
self.value = value

def eval(self):
return self.value

class Add:
def __init__(self, input1, input2):
self.input1 = input1
self.input2 = input2

def eval(self):
return self.input1.eval() + self.input2.eval()


a = Number(20)
b = Number(72)

adder = Add(a, b)
print adder.eval()

我将如何围绕此包装自定义 GUI?类似于下面的东西,但手绘的稍微少一点!

nodal UI mockup

我会从哪里开始?我目前计划用 Objective-C/Cocoa 编写它,尽管我非常愿意接受其他语言的建议。

最佳答案

我将从建模一些基本接口(interface)开始(在 OOP 意义上,而不是 GUI 意义上)。在我看来,您将拥有一个接受输入集合和单个输出的节点。您没有说明数据类型有多广泛,但您需要一些合适的方法来表示您的输入/输出。对于您的第一个目标,这可以是一个整数。

在一些通用的 C 风格 OOP 语言中(希望它有意义):

class Node<T> {
Node<T>[] inputs;
T eval();
}

class AdderNode extends Node<int> {
int eval() {
int accum = 0;
for (inputs : i)
accum += i.eval();
return i;
}
}

class ConstNode<int I> extends Node<int> {
int eval() { return I; }
}

AdderNode a;
a.inputs.add(ConstNode<2>());
a.inputs.add(ConstNode<3>());
a.eval();

您可以通过将 int 替换为一些抽象类、泛型或接口(interface)来扩展此功能。当然,实际实现会因实际语言而异。

关于python - 实现基于节点的图形界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com