Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 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()