Как избавиться от корневого окна Python Tkinter? - PullRequest
51 голосов
/ 10 сентября 2009

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

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

Ответы [ 4 ]

72 голосов
/ 11 сентября 2009

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

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

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

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

root.deiconify()

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

root.destroy()
12 голосов
/ 11 сентября 2009

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

В чистом Tk есть метод wm для управления окнами. Там вы можете сделать что-то вроде «wmdraw .mywindow», где «.mywindow» является верхним уровнем.

В TkInter вы сможете сделать что-то похожее на:

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

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

root.deiconify()
6 голосов
/ 14 ноября 2014

В OSX iconify, кажется, работает лучше:

root = Tkinter.Tk()
root.iconify()
0 голосов
/ 13 апреля 2017

Если вы не хотите, чтобы при создании окна была «вспышка», используйте это небольшое изменение:

import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...