簡體   English   中英

Python - tkinter:treeview中樹的插圖

[英]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 作為 treeview 的形式:

[+]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()

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM