I need a way to generate an unused name for Tk toplevel window paths, just like #auto
does it for Itcl objects.
How can I do that? Maybe Tk has a similar utility?
I need a way to generate an unused name for Tk toplevel window paths, just like #auto
does it for Itcl objects.
How can I do that? Maybe Tk has a similar utility?
もっと手の込んだ方法があるかもしれませんが、私の場合、一意の名前が必要な場合は、時間外のデータを 1 つ作成するだけです。
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