我需要一种为Tk顶层窗口路径生成未使用名称的方法,就像#auto
为Itcl对象做的那样。
我该怎么做?也许Tk有类似的效用?
答案 0 :(得分:1)
可能有一些更好的方式来做,但在我的情况下,当我需要唯一的名称时,我只是编写一个时间数据,如
set systemTime [clock seconds];
set myname [concat [clock format $systemTime -format %H%M%S] ".myext"]
等等。有许多不同的格式化可能性。
它并不优雅,但是我对它的工作很有用,而且如果你需要对它们保持一定的跟踪它也很有用。
答案 1 :(得分: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