Как избавиться от корневого окна Python Tkinter?
Знаете ли вы умный способ скрыть или каким-либо другим способом избавиться от появившегося окна root, открытого Tk()
? Я хотел бы просто использовать обычный диалог.
Должен ли я пропустить диалог и поместить все мои компоненты в корневое окно? Возможно ли это или желательно? Или есть более разумное решение?
Ответы
Ответ 1
Вероятно, подавляющее большинство приложений на основе tk размещает все компоненты в корневом окне по умолчанию. Это самый удобный способ сделать это, так как он уже существует. Выбор, чтобы скрыть окно по умолчанию и создать свое собственное, является прекрасной вещью, которую нужно сделать, хотя это требует лишь небольшой дополнительной работы.
Чтобы ответить на конкретный вопрос о том, как его скрыть, используйте метод изъятия в корневом окне:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
Если вы хотите снова сделать окно видимым, вызовите метод deiconify (или wm_deiconify).
root.deiconify()
Как только вы закончите с диалогом, вы можете уничтожить корневое окно вместе со всеми другими виджетами tkinter с помощью метода destroy :
root.destroy()
Ответ 2
Я не тестировал, так как у меня нет среды Python/TKinter, но попробуйте это.
В чистом Tk существует метод wm для управления окнами. Там вы можете сделать что-то вроде "wm remove.mywindow", где ".mywindow" является дополнением.
В TkInter вы сможете сделать что-то похожее на:
root = Tkinter.Tk()
root.withdraw() # won't need this
Если вы хотите снова открыть окно, вызовите метод deiconify (или wm_deiconify).
root.deiconify()
Ответ 3
В OSX, значок, похоже, работает лучше:
root = Tkinter.Tk()
root.iconify()
Ответ 4
Если вы не хотите, чтобы при создании окна была "вспышка", используйте эту небольшую вариацию:
import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
Ответ 5
Для Python 3.0 и выше, чтобы скрыть окно, вам нужно написать следующее:
import tkinter
tkinter.Tk().withdraw()