Когда использовать пакет или планировки сетки в Tkinter?

StackOverflow https://stackoverflow.com/questions/4401202

Вопрос

Есть ли подсказки лучших практики, касающиеся, когда нужно использовать пакет против сетки для их макетов?

От того, что я читал через Google, ConceCuncus, кажется, что сетка может обрабатывать любой сценарий пакета, но не наоборот.

Чтобы начать разговор, кажется, что одно использование случая, которое поддерживает GRID VS. Pack, когда кто-то хочет показать / скрыть виджеты.

Это было полезно?

Решение

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

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

Другое, что нужно рассмотреть, это то, что вы сказали в своем вопросе: если вы хотите показать и скрыть виджеты во время выполнения, grid вероятно, лучший выбор из-за grid_remove Метод, который вспоминает значения всех настроенных атрибутов в случае, если вы хотите повторно добавить виджет.

Лично мой первый выбор всегда использовать pack потому что я впервые научил тк, когда не было grid команда. Если я не могу сделать это легко в pack, или если я очень явно прокладываю вещи в сетке, я буду использовать grid.

Другие советы

Я всегда рекомендую сетку над пакетом для полированных приложений. Есть только несколько краевых случаев, когда пакет проще и соответствует законопроекту (все в одном ряду или COL). Сетка имеет лучшую «композитивность» (например, мегавиджеты или элементы съемок с решетчатым элементами). Причины предпочтения GRID - это дополнительные параметры тонкой настройки, которые он обеспечивает. Использование веса (которые влияют на растущую и сокращающуюся и сокращающиеся на BTW), Minsize и Maxsize, а также удобство, такие как исполнительные однородные ряды / колонны.

Полное хранение приложения любого размера будет использовать (значительно). Меньше рамок, чем эквивалентное упакоемое приложение, и имеют лучшую термоусадочную / развернуть контроль над внутренними элементами.

Кстати, как пакет, так и сетка могут показывать / скрывать подэлементы, хотя синтаксис немного отличается от двух. Сетка просто лучше, потому что «удалить» (а не «забыть») запомнить варианты сетки на ведомый виджет.

Я лично просто думаю, что сетка намного легче работать, поэтому я бы это использовал. Конечно, вы, наверное, прочитали одну вещь, которую вы никогда не должны делать, это пытаться использовать оба в то же время в том же контейнере. Спасибо, Брайан Окли за это различие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top