0

有没有一种简单的方法来遍历 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来获取所有节点的列表。问题是,AFAIK,不能保证最终的订单,我最终可能会得到不同类型的访问。

4

1 回答 1

3

递归遍历应该为您解决问题。类似的东西

proc traverse {item} {
    do_stuff $item
    foreach [.tree children $item] {
        traverse $item
    }
}


.tree traverse {}

感觉也很简单。

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

于 2013-05-09T19:35:01.413 回答