Когда использовать пакет или планировки сетки в Tkinter?
-
25-09-2019 - |
Вопрос
Есть ли подсказки лучших практики, касающиеся, когда нужно использовать пакет против сетки для их макетов?
От того, что я читал через Google, ConceCuncus, кажется, что сетка может обрабатывать любой сценарий пакета, но не наоборот.
Чтобы начать разговор, кажется, что одно использование случая, которое поддерживает GRID VS. Pack, когда кто-то хочет показать / скрыть виджеты.
Решение
Ни один не является искренним лучше, чем другой. У каждого есть сильные и слабые стороны. Узнайте, что это есть и выбор которого можно использовать, становится очевидным.
grid
значительно легче использовать, если вам нужно выложить вещи в сетке. pack
Как правило, легче использовать, если все, что вам нужно сделать, это поместить некоторые виджеты в одну строку или один столбец. Есть много серого района, между тем, где ни один не обязательно лучше, чем другой.
Другое, что нужно рассмотреть, это то, что вы сказали в своем вопросе: если вы хотите показать и скрыть виджеты во время выполнения, grid
вероятно, лучший выбор из-за grid_remove
Метод, который вспоминает значения всех настроенных атрибутов в случае, если вы хотите повторно добавить виджет.
Лично мой первый выбор всегда использовать pack
потому что я впервые научил тк, когда не было grid
команда. Если я не могу сделать это легко в pack
, или если я очень явно прокладываю вещи в сетке, я буду использовать grid
.
Другие советы
Я всегда рекомендую сетку над пакетом для полированных приложений. Есть только несколько краевых случаев, когда пакет проще и соответствует законопроекту (все в одном ряду или COL). Сетка имеет лучшую «композитивность» (например, мегавиджеты или элементы съемок с решетчатым элементами). Причины предпочтения GRID - это дополнительные параметры тонкой настройки, которые он обеспечивает. Использование веса (которые влияют на растущую и сокращающуюся и сокращающиеся на BTW), Minsize и Maxsize, а также удобство, такие как исполнительные однородные ряды / колонны.
Полное хранение приложения любого размера будет использовать (значительно). Меньше рамок, чем эквивалентное упакоемое приложение, и имеют лучшую термоусадочную / развернуть контроль над внутренними элементами.
Кстати, как пакет, так и сетка могут показывать / скрывать подэлементы, хотя синтаксис немного отличается от двух. Сетка просто лучше, потому что «удалить» (а не «забыть») запомнить варианты сетки на ведомый виджет.
Я лично просто думаю, что сетка намного легче работать, поэтому я бы это использовал. Конечно, вы, наверное, прочитали одну вещь, которую вы никогда не должны делать, это пытаться использовать оба в то же время в том же контейнере. Спасибо, Брайан Окли за это различие.