2

tkinter でトップレベル ウィンドウを作成したいのですが、外側の領域をクリックできないようにします。したがって、この方法では、トップレベル ウィンドウが破棄された直後に、ユーザーはそのウィンドウからクリックすることができません。(また、ルート Tk() から同じウィンドウを作成できないようにします)

4

1 に答える 1

6

Tkinter は「グラブ」と呼ばれるものをサポートしています。ウィンドウにグラブを置くと、すべてのイベントがウィジェットを通過します。ウィンドウの外側をクリックしても、そのクリックはウィンドウに登録されます。

グラブには、ローカルとグローバルの 2 種類があります。ローカルとは、グラブがアプリケーションに対してのみ機能することを意味します。たとえば、デスクトップをクリックすることもできます。グローバル グラブは、コンピューター全体に対して機能します。グラブを解放する方法を提供しないと、UI が完全にロックされる可能性があるため、これらは非常に危険です。

ローカル グラブを設定するには、任意のウィジェットでgrab_setを呼び出すことができ、すべてのイベントがそのウィジェットに送られます。グローバル グラフを設定するには、grab_set_globalを呼び出します。

ローカル グラブは、tkinter がモーダル ダイアログを実装する方法です。ダイアログが開いている間はローカル グラブがあるため、メイン ウィンドウのボタンをクリックする前にダイアログを閉じる必要があります。

危うしウィル・ロビンソン!グローバル グラブを使用している場合は、絶対に簡単にグラブを解放できる方法があることを確認してください。たとえば、開発中にafter、15 秒後にグラブを解放するために使用する場合があります。または、エスケープ キーにバインドします。常に、常に最初にローカル グラブでテストしてください。ただし、経験則として、どうしても必要な場合を除き、グローバル グラブの使用は避けるべきです。

于 2015-05-22T21:25:49.823 に答える