Когда использовать tkinter для размещения пакетов или сетки? - PullRequest
23 голосов
/ 09 декабря 2010

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

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

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

Ответы [ 3 ]

11 голосов
/ 09 декабря 2010

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

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

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

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

9 голосов
/ 10 декабря 2010

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

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

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

2 голосов
/ 09 декабря 2010

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

...