0

次の Tcl スクリプトでは、エントリ ウィジェットは入力を受け付けません。表示されますが、反応しません。

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test}

tk_messageBox 行をコメント アウトすると、エントリ ウィジェットは正常に動作します。この動作の原因と修正方法を教えてください。

Windows で Tcl/Tk 8.5.2 を使用しています。

明確にするために、私の問題は、メッセージボックスが閉じられた後に入力ボックスが壊れていることです。入力ボックスはフォーカス/入力を受け入れず、キャレットを表示しません。私は、自分でコンパイルした Tcl/Tk と Equi4 の tclkit を使用して、Windows XP と Vista でこれをテストしまし。いずれの場合も、初期化スクリプトでメッセージ ボックスが表示されている場合、エントリは機能しません。

編集:もう1つ。コードがインタラクティブなウィッシュ コンソールに入力された場合、この「バグ」は存在しません。コードがファイル内にあり、ファイル名を引数としてコマンドラインからwishが呼び出された場合にのみ失敗するようです。

4

5 に答える 5

0

メッセージボックスはモーダルです。つまり、閉じるまで入力フォーカスをキャプチャします。アプリを開いている間も応答性を維持したい場合は、メッセージを別の方法で表示する必要があります。

于 2010-01-16T06:57:50.653 に答える
0

Windows XP で tclkit 8.5.8 を使用して 3 行の tcl/tk の例を試してみたところ、期待どおりに動作しました。tk 8.x はますます多くの Windows ネイティブ ウィジェットを使用しており、これらのウィジェットと tk のみのウィジェットとの間の相互作用は、時には厄介なものになる可能性があることに注意してください。

于 2010-01-21T17:21:50.300 に答える
0

典型的なフォーカスの問題のようです。システムでテストしたところ、次のスクリプトは正常に動作するようです。

pack [entry .a] -padx 15 -pady 15
tk_messageBox -message {test} focus
focus -force .a

この種の問題を抱えているときはいつでも、焦点が失われている可能性があり、それを回復する必要があると考えてください. フォーカス コマンドとグラブ コマンドの両方を確認します。

それが役に立てば幸い。

于 2010-01-20T20:59:31.920 に答える
0

どうやらそれはTkのバグです。

簡単な修正は置くことです

update idletasks

初期化スクリプトのコードの最初の行として。

于 2010-02-03T23:11:17.130 に答える