1

codeこれはTkに関する一般的な質問なので、投稿がないことをお許しください。エントリ、いくつかのチェックボタン、ラジオボタン、およびボタン ウィジェットで構成される小さな Tcl/Tk GUI を作成しました。これらのウィジェットのいずれかが変更されたときに特定の proc を実行して、すべてのウィジェットの状態を確認し、何かを行う必要があります。チェックボタンがチェックされているときや、エントリウィジェットに何かが入力されているときなどです。

-commandforcheckbuttonやforなどradiobuttonのウィジェット固有のオプションを使用して、目的の動作を実現できます。この実装で私が抱えている問題は、これが完全に透過的で読みにくいということです。-validatecommandentry

コマンドなどを使用bindして、ウィジェットの変更時にスクリプトを呼び出すことはできますか?

注: 私は、ウィジェットが実際に変更されたときにのみスクリプトをトリガーしたいと思いbindます<KeyRelease><ButtonRelease>

ありがとうございました

4

1 に答える 1

3

-variable および -textvariable オプションを使用します (後者はエントリ用、前者はチェックボタンとラジオボタン用)。すべてのウィジェットをサポートする変数を同じ配列のメンバーにします。次にtrace、配列全体で使用して、変数の更新を処理します。

array set ::form {entry "" flag 0}
entry .entry -textvariable ::form(entry)
checkbutton .flag -variable ::form(flag)
proc handle_update {name1 name2 op} {
    # something changed
    # <your code here>
}
trace add variable ::form write handle_update
于 2013-01-04T14:44:59.463 に答える