Как избавиться от корневого окна Python Tkinter?

Знаете ли вы умный способ скрыть или каким-либо другим способом избавиться от появившегося окна root, открытого Tk() ? Я хотел бы просто использовать обычный диалог.

Должен ли я пропустить диалог и поместить все мои компоненты в корневое окно? Возможно ли это или желательно? Или есть более разумное решение?

Вероятно, подавляющее большинство приложений на базе tk помещают все компоненты в корневое окно по умолчанию. Это самый удобный способ сделать это, поскольку он уже существует. Выбор скрытия окна по умолчанию и создание собственного – это прекрасная вещь, но для этого требуется лишь небольшая часть дополнительной работы.

Чтобы ответить на ваш конкретный вопрос о том, как скрыть его, используйте метод withdraw корневого окна:

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

Для чего это стоит, эта информация доступна в вики Tkinter

Если вы хотите снова открыть окно, вызовите метод deiconify (или wm_deiconify).

 root.deiconify() 

После того, как вы закончите с создаваемыми вами диалоговыми окнами, вы можете уничтожить корневое окно вместе со всеми другими виджетами tkinter с помощью метода destroy:

 root.destroy() 

Я не тестировал, так как у меня нет среды Python / TKinter, но попробуйте это.

В чистом Tk существует метод wm для управления окнами. Там вы можете сделать что-то вроде «wm remove .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()