親ウィンドウからフォーカスを奪い、ユーザーに入力を強制するダイアログ ボックスを作成するにはどうすればよいですか? ユーザーが入力を行うか、キャンセル ボタンを押さない限り、親ウィンドウにはアクセスできません。メッセージボックスのようなものですが、入力フィールドがあります。トップレベル ウィンドウを作成するトップレベル メソッドは見つかりましたが、ユーザーが親ウィンドウにアクセスできないようにするメソッドは見つかりませんでした。ありがとう
2 に答える
ウィンドウを一時的にすることは、解決策全体ではありません。フォーカスをそれ自体に強制するウィンドウは、「モーダル」ウィンドウと呼ばれます。重要なのは「grab_set()」メソッドです。アプリケーションのフォーカスを強制する、またはウィンドウシステム全体のフォーカスを強制するモーダルウィンドウを使用できます。
「モーダル」と組み合わせて「Tkinter」をグーグルで検索すると、さらに多くの情報を見つけることができます。ワンヒット:http ://tkinter.unpythonic.net/wiki/ModalWindow
私は肯定的ではありませんが、継承した新しいクラスを作成TopLevel
して親にアタッチすると、希望にself.transient(parent)
近いものが必要になるようです。親ウィンドウへの入力もブロックすると想定しています。
主なトリックはコンストラクターで行われます。まず、transient を使用して、このウィンドウを親ウィンドウ (通常は、ダイアログが起動されたアプリケーション ウィンドウ) に関連付けます。ダイアログはウィンドウ マネージャーにアイコンとして表示されず (たとえば、Windows のタスク バーには表示されません)、親ウィンドウをアイコン化すると、ダイアログも非表示になります。
詳しくはこちらのページをご覧ください