Python - tkinter:树视图中树的插图
Python - tkinter: Illustration of tree in treeview
他们是用来说明一些树的方法吗:
from anytree import Node, RenderTree
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
在 tkinter 中作为表单的树视图:
[+]Udo
├──[+] Marc
│ └──[+] Lian
└── [+]Dan
├──[+] Jet
├──[+] Jan
└──[+] Joe
与 属性 一起,单击 [+] 打开按钮本身右侧的节点子树。下图大概是我心目中的treeview:
找到了一些方法,但不知道他们是否有更好的方法来解决问题。
代码:
from anytree import Node, RenderTree, AsciiStyle, PreOrderIter
from tkinter import *
from tkinter import ttk
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
class TreeView(Frame):
def __init__(self, parent, tree):
self.tree = tree
self.treeview = ttk.Treeview(parent, height = 7)
def generate(self):
self.treeview.pack()
index = 0
for node in PreOrderIter(self.tree):
self.treeview.insert('',f'{index}', node.name, text = node.name)
index = index + 1
for node in PreOrderIter(self.tree):
for child in node.children:
self.treeview.move(child.name, node.name, 'end')
root = Tk()
tv = TreeView(root, udo)
tv.generate()
root.mainloop()
输出:
他们是用来说明一些树的方法吗:
from anytree import Node, RenderTree
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
在 tkinter 中作为表单的树视图:
[+]Udo
├──[+] Marc
│ └──[+] Lian
└── [+]Dan
├──[+] Jet
├──[+] Jan
└──[+] Joe
与 属性 一起,单击 [+] 打开按钮本身右侧的节点子树。下图大概是我心目中的treeview:
找到了一些方法,但不知道他们是否有更好的方法来解决问题。
代码:
from anytree import Node, RenderTree, AsciiStyle, PreOrderIter
from tkinter import *
from tkinter import ttk
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
class TreeView(Frame):
def __init__(self, parent, tree):
self.tree = tree
self.treeview = ttk.Treeview(parent, height = 7)
def generate(self):
self.treeview.pack()
index = 0
for node in PreOrderIter(self.tree):
self.treeview.insert('',f'{index}', node.name, text = node.name)
index = index + 1
for node in PreOrderIter(self.tree):
for child in node.children:
self.treeview.move(child.name, node.name, 'end')
root = Tk()
tv = TreeView(root, udo)
tv.generate()
root.mainloop()
输出: