Как избавиться от корневого окна Python Tkinter?
Вопрос
Знаете ли вы умный способ скрыть или каким-либо другим способом избавиться от корневого окна, которое открывается с помощью Tk ()
? Я хотел бы просто использовать обычный диалог.
Должен ли я пропустить диалог и поместить все мои компоненты в корневое окно? Это возможно или желательно? Или есть более разумное решение?
Решение
Вероятно, подавляющее большинство приложений на основе tk размещает все компоненты в корневом окне по умолчанию. Это самый удобный способ сделать это, так как он уже существует. Выбор, чтобы скрыть окно по умолчанию и создать свое собственное, является прекрасной вещью, которую нужно сделать, хотя это требует лишь небольшой дополнительной работы. Р>
Чтобы ответить на конкретный вопрос о том, как его скрыть, используйте снять метод корневого окна:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
Если вы хотите снова сделать окно видимым, позвоните в deiconify (или wm_deiconify).
root.deiconify()
После того, как вы закончили работу с диалоговым окном, вы можете уничтожить корневое окно вместе со всеми другими виджетами tkinter с помощью уничтожить метод:
root.destroy()
Другие советы
Я не тестировал, так как у меня нет среды Python / TKinter, но попробуйте это.
В чистом Tk есть метод с именем " wm " управлять окнами. Там вы можете сделать что-то вроде " wm изъять .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()