python - Extract dictionary from QTreeWidget -
i managed create treewidget dictionary, want reverse engineer it, , want create dictionary qtreewidget. quite lost on how that, seems straight forward fail.
the idea parent items
for index in range(self.treewidget.toplevelitemcount()): parent = self.treewidget.toplevelitem(index)
from there on need recursively go through each sublevel parent.childcount(), if childcount valid, iterate on child.
but dont know how create dictionary that. please me out.. ideally this
"core.global_vars.arrunner_qmenu_object_name" "core.global_vars.metadata_label" "core.logger.console_verbosity"
or in best case {"core:{"global_vars:{"arrunner_qmenu_object_name":none}}, ...}
update
replacejson main functions gets root parents, there on gather childrens , add them global children list. after that, generate string "root.child.child.child" can expand dict {"root":"{"child":...}}
then in replace json add string config.. there way easier way.. appreciated.
so came with:
def children(self, parent): global children childcount = parent.childcount() if childcount: index in range(childcount): self.children(parent.child(index)) elif not parent.parent() , not parent.text(1): # top levels without children children.append(parent) if parent.text(1): children.append(parent) def generatestring(self, treeitem): def getparent(item): if item.parent(): global parents parents.append(str(item.parent().text(0))) getparent(item.parent()) global parents parents = [str(treeitem.text(0))] getparent(treeitem) attribute, value = '.'.join(parents[::-1]), treeitem.text(1) return attribute, value def _replacejson(self): super(jsoneditor, self)._replacejson() writetofile(self.configfile, "{}") # getting children global children children = [] index in range(self.treewidget.toplevelitemcount()): parent = self.treewidget.toplevelitem(index) self.children(parent) # generating config string child in children: attribute, value = self.generatestring(child) self._addtoconfig(attribute, value) self.log.info("updated config file: {}".format(os.path.basename(self.configfile))) self.close()
Comments
Post a Comment