遍历Tk中的ttk::treeview



是否有一种简单的方法来遍历Tcl/Tk ttk::treview的项目,就好像它们是列表框中的项目一样?例子:

               A
           |   |-- B
    visit  |   |   |-- C
    order  |   |   |-- D         ---->    A B C D E F G
           |   E
           V   |-- F
                   |-- G

我知道这将对应于提前遍历树,这实际上是我当前的解决方案。因为我有一个最大深度为N的完整树,我可以这样做:

foreach lev1 [.tree children {}] {
    do_stuff $lev1 
    foreach lev2 [.tree children $lev1] {
        do_stuff$lev2
        foreach lev3 [.tree children $lev2] {
            do_stuff $lev3
               ....
        }
    }
}

但我正在寻找一种更简单的方法来做这件事。

我考虑给每个节点添加一个标签(比如mytag),并使用:.tree tag has mytag来获取所有节点的列表。问题是,我敢肯定,不能保证最终的订单,我可能会以不同类型的访问告终。

递归遍历应该可以满足您的要求。

之类的东西
proc traverse {item} {
    do_stuff $item
    foreach [.tree children $item] {
        traverse $item
    }
}

.tree traverse {}

感觉也相当简单。

(免责声明:我还没有实际测试过)

最新更新