78

によって開かれた、表示されるルートウィンドウを非表示にする、または他の方法で削除するスマートな方法を知っていますTk()か?通常のダイアログを使用したいだけです。

ダイアログをスキップして、すべてのコンポーネントをルートウィンドウに配置する必要がありますか?それは可能ですか、それとも望ましいですか?または、よりスマートなソリューションはありますか?

4

8 に答える 8

115

おそらく、tkベースのアプリケーションの大部分は、すべてのコンポーネントをデフォルトのルートウィンドウに配置します。これはすでに存在するため、これを行うための最も便利な方法です。デフォルトのウィンドウを非表示にして独自のウィンドウを作成することを選択することは、ほんの少しの追加作業が必要ですが、まったく問題ありません。

非表示にする方法に関する特定の質問に答えるには、ルートウィンドウのwithdrawメソッドを使用します。

import Tkinter as tk
root = tk.Tk()
root.withdraw()

ウィンドウを再び表示したい場合は、deiconify(またはwm_deiconify)メソッドを呼び出します。

root.deiconify()

ダイアログが終了したら、destroyメソッドを使用して他のすべてのtkinterウィジェットと一緒にルートウィンドウを破棄できます。

root.destroy()
于 2009-09-10T21:02:32.060 に答える
13

Python / TKinter環境がないのでテストしていませんが、試してみてください。

純粋なTkには、ウィンドウを管理するための「wm」と呼ばれるメソッドがあります。そこで、「.mywindow」がトップレベルである「wmwithdraw.mywindow」のようなことを行うことができます。

TkInterでは、次のようなことができるはずです。

root = Tkinter.Tk()
root.withdraw() # won't need this

ウィンドウを再び表示したい場合は、deiconify(またはwm_deiconify)メソッドを呼び出します。

root.deiconify()
于 2009-09-10T20:54:41.723 に答える
9

OSXでは、iconifyの方がうまく機能しているようです。

root = Tkinter.Tk()
root.iconify()
于 2014-11-14T14:50:19.643 に答える
4

ウィンドウの作成時に「フラッシュ」を発生させたくない場合は、次のわずかなバリエーションを使用します。

import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
于 2017-04-13T01:18:14.347 に答える
2

私はそれがそうであるかどうかをチェックする必要があり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

ウィンドウを再描画します

iconify

ウィンドウを(破壊せずに)アイコンに変えます。ウィンドウを再描画するには、deiconifyを使用します。Windowsでは、ウィンドウがタスクバーに表示されます。ウィンドウがアイコン化されると、stateメソッドは

通常、アイコン化、撤回、アイコン

于 2020-10-05T07:13:35.377 に答える
1

この方法は正常に機能します。

import Tkinter as tk 
root = tk.Tk() 
root.withdraw()

またはこれ:

root = tk.Tk()
root.overrideredirect(1)
root.withdraw()

忘れてはならない2つのこと:

  1. クラスをインポートすることを忘れないでください:

    tkinterをtkとしてインポートする

  2. 上記のコマンドをメインウィンドウの任意の機能の外に配置します

于 2021-04-21T15:25:03.260 に答える
-1

Python 3.0以降の場合、ウィンドウを非表示にするには、次のように記述する必要があります。

import tkinter
tkinter.Tk().withdraw()
于 2019-09-04T09:00:34.390 に答える
-1
root.deiconify()
root.withdraw()
于 2021-01-25T06:00:37.710 に答える