Даже для такого простого интерфейса есть множество способов определить его внешний вид с помощью основанного на ограничениях менеджера компоновки pack. Например, чтобы поместить кнопку в центре окна, добавьте в вызов метода pack параметр expand=YES в примере 7.11, как показано ниже:
Button(root, text=’press’, command=root.quit).pack(side=LEFT, expand=YES)
В этом случае менеджер компоновки отдаст кнопке все свободное пространство, но не растянет ее. В результате получится окно, как на рис. 7.7.
Рис. 7.7. pack(side=LEFT, expand=YES)
Если необходимо, чтобы кнопке было отдано все свободное пространство и она была растянута по горизонтали, добавьте в вызов pack име
нованные аргументы expand=YES и fill=X. В результате получится то, что изображено на рис. 7.8.
Рис. 7.8. pack(side=LEFT, expand=YES, fill=X)
Кнопка первоначально займет все окно (выделенное ей место расширено, а сама она растянута, чтобы заполнить выделенное пространство). При этом кнопка будет растягиваться с увеличением размеров родительского окна. Как показано на рис. 7.9, кнопка в этом окне будет растягиваться при растягивании родителя, но только по горизонтальной оси X.
Рис. 7.9. Изменение размера при expand=YES, fill=X
Чтобы кнопка растягивалась в обоих направлениях, укажите в вызове pack параметры expand=YES и fill=BOTH — теперь при изменении размеров окна кнопка будет растягиваться во все стороны, как показано на рис. 7.10. Если раскрыть окно на весь экран, получится одна очень большая кнопка tkinter.
Рис. 7.10. Изменение размера при expand=YES, fill=BOTH
В более сложных интерфейсах такая кнопка будет растягиваться, только когда автоматическое изменение размеров задано для всех содержащих ее виджетов. Здесь единственным родителем кнопки является корневое окно Tk программы, поэтому вопрос об автоматическом изменении размеров родителя пока не стоит — в последующих сценариях нам потребуется также делать автоматически расширяемыми объемлющие виджеты Frame. Мы еще вернемся к менеджеру компоновки, когда встретимся с интерфейсами, содержащими несколько виджетов, и еще раз — когда будем изучать альтернативную функцию grid в главе 9.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011