3

エントリ、テキスト、スピナー、チェックボタン、ラジオボタンなどのデータ入力ウィジェットの値変更タイプのイベントはありますか?on-value-changeとは、キーボード入力または切り取り/削除/貼り付け(およびテキストedit_undo / edit_redo)アクティビティによってウィジェットの値が変更されたことを検出する機能を意味しますか?Tkinterイベントのドキュメント[1]にそのようなイベントが記載されていません。

Tkinter変数を監視したいウィジェット値にリンクし、これらの変数の.trace_variable('w'、...)メソッドを使用して値の変更にバインドする適切な手法はありますか?これは正しいアプローチのように思えますが、私が研究したTkinterアプリケーションのソースコードでtrace_variable()があまり使用されていないので、このアプローチの使用には注意が必要です。

[1] http://infohost.nmt.edu/tcc/help/pubs/tkinter/events.html

4

1 に答える 1

1

ウィジェットが異なれば、必要なソリューションも異なります。たとえば、チェック ボタンとラジオ ボタンにはコマンド オプションがあり、エントリ ウィジェットを使用すると、組み込みの検証機能を使用できます。

変数に関連付けることができるすべてのウィジェットでは、変数トレースを実行することが一般的な解決策です。テキスト ウィジェットは例外の 1 つです。多くの労力を費やさないと、テキスト ウィジェットを変数に関連付けることができないからです。

Tcl/tk の世界では、すべてのウィジェットを 1 つの配列 (tcl のハッシュ マップ/辞書の名前) に関連付けてから、その配列に 1 つのトレースを配置します。残念ながら、tkinter は tcl 配列を直接サポートしていません。ただし、サポートはやや簡単にハッキングできます。詳細については、次の質問に対する私の回答を参照してください: Tkinter ウィジェットの値が変更されるたびにコードを実行する方法は?

于 2010-11-12T14:21:02.750 に答える