Снова о параметрах expand и fill компоновки

snova o parametrah expand i fill komponovki Графические интерфейсы пользователя

Помимо порядка добавления на взаимное расположение виджетов оказывает влияние также уже знакомый параметр fill, позволяющий растягивать виджет так, чтобы он занимал все пространство вдоль выделенного ему пустого края, а все пустое пространство, оставшееся после расстановки элементов, поровну распределять между виджетами, при добавлении которых был указан параметр expand=YES. Например, следующий фрагмент создает окно, изображенное на рис. 7.16 (сравните с рис. 7.15).

Button(win, text=’Hello’, command=greeting).pack(side=LEFT,fill=Y)

Label(win, text=’Hello container world’).pack(side=TOP)

Button(win, text=’Quit’, command=win.quit).pack(side=RIGHT, expand=YES,fill=X)

Рис. 7.16. Компоновка с параметрами expand и fill

 

Чтобы все эти элементы увеличивались вместе с окном, необходимо сделать содержащий их контейнер расширяемым — виджеты расширяются за пределы своего первоначального положения, только если расширяются все их родители. Ниже демонстрируются изменения в gui4.py:

win = Frame()

win.pack(side=TOP, expand=YES, fill=BOTH)

Button(win, text=’Hello’, command=greeting).pack(side=LEFT, fill=Y)

Label(win, text=’Hello container world’).pack(side=TOP)

Button(win, text=’Quit’, command=win.quit).pack(side=RIGHT, expand=YES,fill=X)

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

Рис. 7.17. Расширяемый фрейм в увеличенном окне gui4

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий