gpt4 book ai didi

python - 在 python 中迭代带有子节点的 GTK3 Treestore

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:07 24 4
gpt4 key购买 nike

我正在尝试在 GTK 3 树存储中搜索字符串。树存储有 4 列,用于具有可调用节点的 TreeView 小部件。我用这个函数创建节点:

def AddItem(self,ParentIter,txt,datapath='',projName=Project):         
self.store = self.builder.get_object('theTreeStore')
NodeId = secrets.token_hex(8)

if ParentIter == None:
ParentNodeId = ''
else:
ParentNodeId = self.store.get_value(ParentIter, 2)
treeEntry = ['%s' %ParentNodeId,'%s' %txt,'%s' %NodeId,'%s' %datapath]
node = self.store.append(ParentIter, treeEntry) <<<<<<<<<<<<<
self.view = self.builder.get_object('Tree')
self.view.set_model(self.store)

# table nodes(tParentNodeID ,tNodeTxt ,tNodeID ,tDataPath );



sql = "INSERT INTO %s (tParentNodeID ,tNodeTxt ,tNodeID ,tDataPath ) VALUES ('%s','%s','%s','%s')" %(projName,ParentNodeId,txt,NodeId,datapath)
self.cursor.execute(sql)
self.mariadb_connection.commit()
for x in self.cursor:
print(x)
return(node)

正如您所看到的,树中的数据嵌套在其父级中。

现在我需要以某种方式在树存储中搜索包含特定 NodeId 字符串的行。我已经一遍又一遍地阅读 gtk 文档,但我不太清楚该怎么做。我猜我需要使用以下方法:

store.get_iter()store.iter_children()

但我不知道我尝试的一切都只返回根节点,没有子节点。

我基本上想要一个搜索函数,它将递归地搜索每个节点及其子节点,以及它们的子节点以查找字符串。像这样的东西:

def GetRowbyNodeID(nodeid):
for row in treestore:
if row[1]==nodeid:
return(row)
for children in row:
if children[1] == nodeid
return(children)

代码位于多个文件中,如果需要,我可以发布任何相关的函数。

最佳答案

GtkTreeStore 实现 GtkTreeModel 接口(interface)。因此,您可以使用以下方法:

我还建议阅读 this tutorial 。 “模型”部分包含迭代模型所需的所有内容(剧透:搜索 print_tree_store)

关于python - 在 python 中迭代带有子节点的 GTK3 Treestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53181051/

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