美文网首页学习提升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