Python Tkinterルートウィンドウを削除するにはどうすればよいですか?
質問
Tk()
によって開かれたルートウィンドウを非表示にする、または他の方法で取り除くスマートな方法を知っていますか?通常のダイアログを使用したいだけです。
ダイアログをスキップして、すべてのコンポーネントをルートウィンドウに配置する必要がありますか?それは可能ですか、それとも望ましいですか?または、よりスマートなソリューションがありますか?
解決
おそらく、tkベースのアプリケーションの大半は、すべてのコンポーネントをデフォルトのルートウィンドウに配置します。これは既に存在するため、これを行う最も便利な方法です。デフォルトのウィンドウを非表示にして独自のウィンドウを作成することを選択するのは完全に素晴らしいことですが、ほんの少しの余分な作業が必要です。
非表示にする方法に関する特定の質問に答えるには、 withdrawを使用しますルートウィンドウのメソッド:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
ウィンドウを再び表示したい場合は、 deiconify (またはwm_deiconify)メソッド。
root.deiconify()
ダイアログの操作が完了したら、 destroy メソッド:
root.destroy()
他のヒント
Python / TKinter環境がないためテストしていませんが、これを試してください。
純粋なTkには、「wm」というメソッドがあります。ウィンドウを管理します。そこで、「wm withdraw .mywindow」のようなことができます。ここで、「。mywindow」はトップレベルです。
TkInterでは、次のようなことができるはずです:
root = Tkinter.Tk()
root.withdraw() # won't need this
ウィンドウを再び表示したい場合は、 deiconify (またはwm_deiconify)メソッド。
root.deiconify()
OSXでは、iconifyの方がうまく機能しているようです:
root = Tkinter.Tk()
root.iconify()
「フラッシュ」にしたくない場合ウィンドウが作成されると、このわずかなバリエーションを使用します。
import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()