1

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?

4

2 に答える 2

1

もっと手の込んだ方法があるかもしれませんが、私の場合、一意の名前が必要な場合は、時間外のデータを 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 に答える