Tcl/Tk を使用して現在のウィンドウにフォーカスを合わせるにはどうすればよいですか。focus コマンドを使用してみましたが、空の文字列が返されます。
同じウィッシュ セッションに複数のウィンドウがあります。各ウィンドウには同じボタン セットがありますが、データは異なります。ボタンが押されたウィンドウへのパスを見つける必要があります。
引数の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]]}
そこにエントリ ウィジェットを追加すると、クリックしたときにフォーカスがボタン ウィジェットと必ずしも一致しないことがわかります。それには、最初にボタンにタブ移動する必要があります。