Макет пакета Tkinter: Аналогия с резинкой

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

Насколько близка эта аналогия с правдой и в чем ее несоответствия?

1 ответ

Решение

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

pack Концептуально очень просто: он размещает виджеты по краям нераспределенного пространства в родительском виджете. Самый простой способ подумать об этом - это заполнить ящик снаружи и направить себя к середине. С помощью packВы постоянно заполняете пустую полость, поэтому это называется моделью полости.

Когда вы размещаете виджет внутри полости родительского виджета, вы размещаете его вдоль одной из сторон полости. Затем виджет занимает всю эту полость. Например, если вы что-то упакуете с опцией side="left", виджет займет всю левую сторону полости, а затем уменьшит размер полости для следующего виджета. Если родительский элемент имеет ширину 1000 пикселей, а дочерний элемент имеет ширину 100 пикселей, вы уменьшите размер полости до 900 пикселей для следующего дочернего виджета.

Абсолютно лучшее и наиболее полное описание того, как pack Работы можно найти в книге " Практическое программирование на Tcl и Tk" Брента Уэлча, Кена Джонса и Джеффри Хоббса. Краткое, но полное описание алгоритма упаковщика можно найти на справочной странице пакета tcl/tk. Он написан с точки зрения программы tcl/tk (по сравнению с python/tkinter), но фундаментальные аспекты одинаковы независимо от того, какой язык вы используете.

Другие вопросы по тегам