美文网首页学习提升Python
Python可视化编程 | TreeView树形控件

Python可视化编程 | TreeView树形控件

作者: 不思九八 | 来源:发表于2020-01-13 22:26 被阅读0次

递归遍历枚举一目录下在的子目录和子文件,并使用Tkinter的TreeView控件显示:

import tkinter as tk
from tkinter import ttk
import os, fnmatch

window = tk.Tk()
 
# 定义列的名称
tree = ttk.Treeview(window, show = "tree")

def all_files(dir, root):
    for home, subdirs, files in os.walk(dir):
        for idx, dir in enumerate(subdirs):
            sub_path = os.path.join(home, dir)
            sub_id = tree.insert(root, idx, text=dir, open=1)
            all_files(sub_path, sub_id)    # 递归子目录
        for idx, fil in enumerate(files):
            tree.insert(root, idx, text=fil)
        break  # 一层就跳出,二层子文件由递归完成


root = tree.insert("", 0,text="目录", open=1)
all_files("F:\\TestFolder", root)


# 鼠标选中一行回调
def selectTree(event):
    for item in tree.selection():
        print(item, ' =>', tree.item(item))
     
# 选中行
tree.bind('<<TreeviewSelect>>', selectTree)
 
tree.pack(expand = True, fill = tk.BOTH)
 
window.mainloop()

说明:

  • tree = ttk.Treeview(window, show="tree"): 创建Treeview实例,显示方式为tree,如果show指定为 column 则显示为表格。
  • tree.insert(): 插入节点, 参数:
    • parent:父级节点,为空字符串时表示根节点。
    • index:插入如位置,可以是数字,也可以是'end',表示插入到末尾。
    • iid: 节点索引,在整个树的范围内具有唯一性,如果为None,则由内部自动分配。
    • image: 图标。
    • values: 附加数据,如果显示为表格时,values表示各列数据
    • open: 1展开,0折叠
    • tags: 附加数据
  • 使用os.walk(dir)遍历目录,由于这个方法会自动递归遍历所有子目录,因此循环一次就跳出,子目录用递归方法插入。

相关文章

网友评论

    本文标题:Python可视化编程 | TreeView树形控件

    本文链接:https://www.haomeiwen.com/subject/zzanactx.html