在TclTK中找出小部件类

问题描述 投票:0回答:1

我在窗口中有几个按钮,我想改变所有的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列出的类值吗?

提前致谢!!!!

class widget tcl tk
1个回答
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
}
© www.soinside.com 2019 - 2024. All rights reserved.