在TclTK中找出小部件类

时间:2018-02-28 13:33:55

标签: class widget tcl tk

我在窗口中有几个按钮,我想更改所有的pady值。我能做到:

foreach a [list b1 b2 b3 ... bn] {
   grid configure $a -pady 2
}

但这很慢,因为我必须查找所有路径,如果我更改接口,那么我必须手动更新列表。所以我在考虑做:

foreach a [winfo children $win] {
    if {[winfo class $a] == "TButton"} {
        grid configure $a -pady 2
    }
}

但我无法在任何地方找到小部件的类。我可以在TclTk中做到这一点吗?如果是的话,是否有人可以向我指出winfo class widget_path的类值列表?

先谢谢!!!!

1 个答案:

答案 0 :(得分:0)

winfo children只给你直接的孩子。如果您的任何按钮包含在例如帧,它们不会在列表中返回。

The wiki包含创建所有小部件列表的代码,无论深度如何:

proc wlist {{W .}} {
    set list [list $W]
    foreach w [winfo children $W] {
        set list [concat $list [wlist $w]]
    }
    return $list
}