我需要一种方法来为 Tk 顶层窗口路径生成一个未使用的名称,就像#auto
它为 Itcl 对象所做的那样。
我怎样才能做到这一点?也许 Tk 有类似的效用?
我需要一种方法来为 Tk 顶层窗口路径生成一个未使用的名称,就像#auto
它为 Itcl 对象所做的那样。
我怎样才能做到这一点?也许 Tk 有类似的效用?
可能有一些更好的方法可以做到这一点,但就我而言,当我需要唯一名称时,我只需编写一个超时数据,例如
set systemTime [clock seconds];
set myname [concat [clock format $systemTime -format %H%M%S] ".myext"]
等等等等。有很多不同的格式化可能性。
它并不优雅,但我让它在我的东西上工作并且它很有用,如果你需要对它们进行一定的跟踪。
当我需要唯一的小部件名称时,我会使用如下内容:
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