gpt4 book ai didi

python - 从嵌套字典创建 tkinter 嵌套 TreeView

转载 作者:行者123 更新时间:2023-12-01 07:34:48 25 4
gpt4 key购买 nike

我有一个像这样的嵌套字典,我想用它来填充分层 TreeView 。

hierarchy = {
'a': {
'b': {
'e': 'DATA',
'f': 'DATA',
'g': {
'h': 'DATA',
'i': 'DATA',
'j': 'DATA'
},
'm': {
'n': 'DATA',
'o': 'DATA',
'p': 'DATA'
}
},
'c': 'DATA',
'd': 'DATA'
}
}

代码应该遍历嵌套字典并创建适当的 tk TreeView 节点。基本上复制了 PyCharm 的 View ,让您可以打开嵌套字典并根据需要向下钻取。

我粘贴了我在下面编写的代码,但递归根本不起作用。我粘贴它只是为了方便,而不必重新创建 tk 窗口等。

root = tk.Tk()
root.geometry("900x900")
tree = ttk.Treeview(root)
ttk.Style().configure('Treeview', rowheight=30)
tree["columns"] = ("one", "two", 'three')
tree.column("one", width=100)
tree.column("two", width=100)
tree.heading("one", text="a")
tree.heading("two", text="b")
tree.heading("three", text="c")

nodes = {}

def add_node(elem):
for i, j in elem.items():
if isinstance(j, dict):
add_node(j)
else:
if i in nodes.keys():
nodes[j] = tree.insert(i, 1, j, text=j)
else:
nodes[i] = tree.insert("", 1, i, text=i)

for k, v in hierarchy.items():
add_node(k)

tree.pack(expand=True, fill='both')
root.mainloop()
root.destroy()

最佳答案

我明白了:

root = tk.Tk()
root.geometry("900x900")
tree = ttk.Treeview(root)
ttk.Style().configure('Treeview', rowheight=30)
tree["columns"] = ("one", "two", 'three')
tree.column("one", width=100)
tree.column("two", width=100)
tree.heading("one", text="a")
tree.heading("two", text="b")
tree.heading("three", text="c")

def add_node(k, v):
for i, j in v.items():
tree.insert(k, 1, i, text=i)
if isinstance(j, dict):
add_node(i, j)

for k, v in hierarchy.items():
tree.insert("", 1, k, text=k)
add_node(k, v)

tree.pack(expand=True, fill='both')
root.mainloop()

关于python - 从嵌套字典创建 tkinter 嵌套 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036493/

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