目标
按下crtl+s保存当前scene,随意改变scene,按下crtl+l导入刚刚保存的scene
实现
Scene中完成Node读取以及调用Node的解码
def deserialize(self, data, hashmap={
}):
print('解码数据', data)
self.clear()
hashmap = {
}
#创建nodes
for node_data in data['nodes']:
Node(self).deserialize(node_data, hashmap)
#创建edges
return True
其中clear用于清除之前界面已经存在的Node
def clear(self):
while len(self.nodes) > 0:
self.nodes[0].remove()
在node_node.py中做如下修改和添加
仅修改前5项
class Node(Serializable):
def __init__(self, scene, title="Undefined Node", inputs=[], outputs=[]):
super().__init__()
self._title = title
self.scene = scene
self.content = QDMNodeContentWidget(self)
self.grNode = QMGraphicsNode(self)
self.title = title
通过下面两个方法,当使用self.title = title
会改变Node标题
@property
def title(self):
return self._title
@title.setter
def title(self, value):
self._title = value
self.grNode.title = self._title