解决方案是创建一个带有一个额外列的treeview,然后添加一个向树中添加项的函数。如果它是一个子元素,则通过字典的所有元素递归。在
下面是一个使用python2.x的简单示例。我不知道它是否符合你对“优雅”或“轻松”的定义。在import Tkinter as tk
import ttk
DATA = {
"filename":"file.txt",
"filesize":"500kb",
"maxcolwidth": {
"col1":"300",
"col2":"2",
"col3":"3"
},
"numberofcolumns":"3",
"datatypes": {
"col1":"string",
"col2":"int",
"col3":"int"
},
"rowcount":"400"
}
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.tree = ttk.Treeview(self, columns=("value",))
self.vsb = ttk.Scrollbar(self, orient="vertical", command=self.tree.yview)
self.tree.configure(yscrollcommand=self.vsb.set)
self.vsb.pack(side="right", fill="y")
self.tree.pack(side="top", fill="both", expand=True)
self.addNode(value=DATA, parentNode="")
def addNode(self, value, parentNode="", key=None):
if key is None:
id = ""
else:
id = self.tree.insert(parentNode, "end", text=key)
if isinstance(value, dict):
self.tree.item(id, open=True)
for (key, value) in value.iteritems():
self.addNode(value, id, key)
else:
self.tree.item(id, values=(value,))
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()