7

いくつかの組み込み Python スクリプトを実行する MFC アプリケーションがあります。この埋め込みスクリプトが作成するダイアログの 1 つをモーダルにしようとしていますが、あまり成功していません。

モーダル ダイアログを作成する方法を教えてもらえますか? これにはWindows関数を使用する必要がありますか、それともTkまたはPython関数だけで十分ですか?

私がグーグルで調べたところ、次の関数の組み合わせが魔法のように見えますが、期待どおりに機能していないようです:

focus_set()

grab_set()

transient(parent)
4

2 に答える 2

15

grab_setウィンドウを「アプリケーションモーダル」にするための適切なメカニズムです。つまり、同じアプリケーション内の他のすべてのウィンドウ (つまり、同じプロセス内の他の Tkinter ウィンドウ) からすべての入力を受け取りますが、他のアプリケーションと対話することができます。

ダイアログをグローバルにモーダルにしたい場合は、 を使用してgrab_set_globalください。これにより、システム全体のすべてのキーボードおよびマウス入力が引き継がれます。アプリがグラブを解放できないバグがある場合、コンピューターから簡単にロックアウトされる可能性があるため、これを使用するときは細心の注意を払う必要があります。

これを行う必要がある場合は、開発中に一定時間後にグラブを解放するタイマーなどの防弾フェイルセーフを作成しようとします。

于 2013-05-29T15:55:07.160 に答える