エラーを示すポップアップダイアログをサポートしたいモジュールを書いていますが、ルートウィンドウは必要ありません(モジュールをメインGUIから独立させ、複数の呼び出し元アプリケーション間で共有できるようにするため) 。私は単にこれをやってみました:
import tkMessageBox
[...stuff...]
if (errorCondition): tkMessageBox.showwarning("My Module","That won't work!")
...しかし、実行すると、メッセージボックスの横にルートウィンドウが表示されます。メソッドについては知っていますwithdraw()
が、自分自身をインポートTkinter
したりインスタンス化したりしTkinter.Tk()
たことがないため、使用するオブジェクトはありませんwithdraw()
。
うまくいく別の方法は、Tkinter
とにかく先に進んでインポートすることです。そうすれば、自分でルートウィンドウを作成してから、次のようにできますwithdraw()
。
import Tkinter
import tkMessageBox
root = Tkinter.Tk()
root.withdraw()
[...stuff...]
if (errorCondition): tkMessageBox.showwarning("My Module","That won't work!")
...しかし、それは機能しますが、モジュールを取り込み、オブジェクトをインスタンス化して、それを取り除くことができるようにするのは厄介なようです。さらに、このルートと呼び出し元のアプリケーションの「実際の」ルートとの間で物事を混同したくありません。
最初の例に戻ると、内部でtkMessageBox
何かを実行してルートウィンドウを独自に作成していることは明らかです。そのルートウィンドウへの参照を取得して取得できる方法はありますwithdraw()
か?
(環境はWindows7およびPython2.7.3です。)