によって開かれた、表示されるルートウィンドウを非表示にする、または他の方法で削除するスマートな方法を知っていますTk()
か?通常のダイアログを使用したいだけです。
ダイアログをスキップして、すべてのコンポーネントをルートウィンドウに配置する必要がありますか?それは可能ですか、それとも望ましいですか?または、よりスマートなソリューションはありますか?
おそらく、tkベースのアプリケーションの大部分は、すべてのコンポーネントをデフォルトのルートウィンドウに配置します。これはすでに存在するため、これを行うための最も便利な方法です。デフォルトのウィンドウを非表示にして独自のウィンドウを作成することを選択することは、ほんの少しの追加作業が必要ですが、まったく問題ありません。
非表示にする方法に関する特定の質問に答えるには、ルートウィンドウのwithdrawメソッドを使用します。
import Tkinter as tk
root = tk.Tk()
root.withdraw()
ウィンドウを再び表示したい場合は、deiconify(またはwm_deiconify)メソッドを呼び出します。
root.deiconify()
ダイアログが終了したら、destroyメソッドを使用して他のすべてのtkinterウィジェットと一緒にルートウィンドウを破棄できます。
root.destroy()
Python / TKinter環境がないのでテストしていませんが、試してみてください。
純粋なTkには、ウィンドウを管理するための「wm」と呼ばれるメソッドがあります。そこで、「.mywindow」がトップレベルである「wmwithdraw.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()
私はそれがそうであるかどうかをチェックする必要がありwithdrawn
ます、以下は解決策です。
import tkinter as tk
root = tk.Tk()
root.withdraw()
print(root.wm_state())
if root.wm_state() == 'withdrawn': # <----
root.iconify()
root.mainloop()
ウィンドウを画面から削除します(ウィンドウを破棄せずに)。ウィンドウを再描画するには、deiconifyを使用します。ウィンドウが撤回されると、stateメソッドは「withdrawn」を返します。
ウィンドウを再描画します
ウィンドウを(破壊せずに)アイコンに変えます。ウィンドウを再描画するには、deiconifyを使用します。Windowsでは、ウィンドウがタスクバーに表示されます。ウィンドウがアイコン化されると、stateメソッドは
通常、アイコン化、撤回、アイコン
この方法は正常に機能します。
import Tkinter as tk
root = tk.Tk()
root.withdraw()
またはこれ:
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
忘れてはならない2つのこと:
クラスをインポートすることを忘れないでください:
tkinterをtkとしてインポートする
上記のコマンドをメインウィンドウの任意の機能の外に配置します
Python 3.0以降の場合、ウィンドウを非表示にするには、次のように記述する必要があります。
import tkinter
tkinter.Tk().withdraw()
root.deiconify()
root.withdraw()