1

Python (2.7) で Tkinter GUI をセットアップしています。類似したウィジェットのコレクションを作成する予定の場所が 1 つあります。 と を使用grid()grid_remove()て、メイン ウィンドウの特定の場所に表示されるウィジェットを選択します。私は動作中のプロトタイプを持っていますが、唯一の動作の問題はgrid_remove()、ウィジェットを非表示にすると、ウィジェットがフォーカスを保持し、キーボード イベントに応答することです。

grid_remove()を自動的に検出し、ウィジェットにフォーカスを別の場所に渡すように強制するために使用できるイベント バインディングはありますか? grid_remove()それとも、それ自体を行うボタンコードにフォーカスの変更を入れる必要がありますか?

4

1 に答える 1

3

<Unmap>イベントにバインドしたい。公式の tcl/tk ドキュメント ( bind man ページ) から:

Map イベントと Unmap イベントは、ウィンドウのマッピング状態が変化するたびに生成されます。

ウィンドウはマップされていない状態で作成されます。最上位のウィンドウは、通常の状態に遷移するときにマップされ、非表示およびアイコン状態ではマップされません。他のウィンドウは、ジオメトリ マネージャー (パックやグリッドなど) の制御下に置かれるとマップされます。

ウィンドウは、それとその先祖のすべてがマップされている場合にのみ表示可能です。ジオメトリ マネージャは通常、自分自身がマップされるまで子をマップせず、マップが解除されるとすべての子をマップ解除することに注意してください。したがって、Tk の Map および Unmap イベントは、ウィンドウが表示可能かどうかを示します。

于 2016-02-04T15:27:41.000 に答える