1

我需要一种方法来为 Tk 顶层窗口路径生成一个未使用的名称,就像#auto它为 Itcl 对象所做的那样。

我怎样才能做到这一点?也许 Tk 有类似的效用?

4

2 回答 2

1

可能有一些更好的方法可以做到这一点,但就我而言,当我需要唯一名称时,我只需编写一个超时数据,例如

set systemTime [clock seconds];
set myname [concat [clock format $systemTime -format %H%M%S] ".myext"]

等等等等。有很多不同的格式化可能性。

它并不优雅,但我让它在我的东西上工作并且它很有用,如果你需要对它们进行一定的跟踪。

于 2012-01-14T08:03:34.200 回答
1

当我需要唯一的小部件名称时,我会使用如下内容:

variable sequencecounter 0;   # Don't touch outside this code!
proc unique {{parent ""}} {
    variable sequencecounter
    while {[winfo exists [set w $parent.w$sequencecounter]]} {
        incr sequencecounter
    }
    return $w
}

保证返回一个不存在的小部件名称。(保证 Tk 运行单线程,所以你知道没有讨厌的竞争条件。)像这样使用它:

set top [toplevel [unique]]
set btn [button [unique $top] -text "Hi" -command { exit }]
pack $btn
于 2012-01-15T22:10:30.157 回答