0

Tcl/Tk を使用して現在のウィンドウにフォーカスを合わせるにはどうすればよいですか。focus コマンドを使用してみましたが、空の文字列が返されます。

同じウィッシュ セッションに複数のウィンドウがあります。各ウィンドウには同じボタン セットがありますが、データは異なります。ボタンが押されたウィンドウへのパスを見つける必要があります。

4

2 に答える 2

4

引数のfocusないコマンドは、フォーカスのある現在の Tk ウィジェットを返すか、フォーカスのある Tk ウィジェットがない場合は空の結果を返します。これをテストするには、Tk を開始していくつかのウィンドウをパックafter 2000 {puts [focus]}し、2 秒以内にウィンドウを使用してクリックします。

でも!ボタン コマンドをバインドし、それ自体をコマンド プロシージャに渡すことで、実現したいことをより効果的に行うことができます。

pack [button .b -text Click -command [list Click .b]]
proc Click {widget args} {puts [list $widget $args [focus]]}

そこにエントリ ウィジェットを追加すると、クリックしたときにフォーカスがボタン ウィジェットと必ずしも一致しないことがわかります。それには、最初にボタンにタブ移動する必要があります。

于 2012-04-18T16:16:00.063 に答える