2016-09-28 8 views
-1

Я знаю, что могу подклассифицировать tk.Frame (или ttk.Frame) и добавить его в TopLevel сделать вторичные окна, но я не уверен, как использовать это как главное окно. Я знаю, что создание экземпляра класса Frame и вызов .mainloop() на нем, похоже, работают для его использования в качестве главного окна, но я чувствую, что это плохая практика ...Как я могу создать класс, который можно использовать в качестве основного окна приложения, но также может использоваться как вторичное окно

Что делают другие люди, когда они делают графики GUI, которые они хотят иметь в основных окнах и вторичных окнах?

+0

Не знаете, что вы просите. Главное окно (если вы имеете в виду корневое окно) также является объектом «Toplevel». – Goyo

ответ

1

Создайте подкласс кадра, а затем поместите его либо в корневое окно, либо в верхний слой. В любом случае вы все равно вызываете mainloop только один раз в корневом окне.

Единственное, что вам нужно предпринять, это то, что вы должны быть осторожны, чтобы позволить пользователю закрыть окно корня, потому что это приведет к уничтожению всех остальных окон.

Если вы создаете программу, которая может иметь несколько окон, вы можете захотеть скрыть корневое окно и всегда помещать свое окно в Toplevel. Конечно, когда вы это делаете, вам нужно убедиться, что вы уничтожаете корневое окно всякий раз, когда уничтожается последнее окно верхнего уровня, или ваша программа будет продолжать работать, но у пользователя не будет доступа к ней.