По умолчанию для управления геометрией grid
используется только столько места, сколько нужно, и не более.При изменении размера окна все дополнительное пространство остается неиспользованным, если вы не укажете grid
, как его использовать.
Строки и столбцы имеют атрибут weight
, который указывает grid
, как использовать дополнительное пространство.Дополнительное пространство дается каждой строке и / или столбцу с положительным весом.вес пропорционален, поэтому столбец с весом 2 получит вдвое больше дополнительного пространства, чем столбец с весом 1.
Если вы хотите, чтобы кнопки занимали все дополнительное пространство, присвойте каждому столбцу одинаковыйвес.Если вы хотите, чтобы они были отцентрированы, добавьте вес пустым столбцам по краям.То же самое касается строк и дополнительного вертикального пространства.
Вы задаете вес столбцов с помощью метода columnconfigure
главного виджета.В вашем случае это корневое окно.
Примеры
Чтобы кнопки были равномерно расположены, добавьте следующие строки кода:
root.grid_columnconfigure((0, 1, 2), weight=1)

Если вы хотите, чтобы сами кнопки расширялись и заполняли дополнительное пространство, используйте атрибут sticky
, чтобы они прилипали к краям столбцов:
Button0.grid(row = 1, column = 0, sticky="ew")
Button1.grid(row = 1, column = 1, sticky="ew")
Button2.grid(row = 1, column = 2, sticky="ew")

Если вы хотите, чтобы кнопки оставались в центре, присвойте весь вес пустым столбцам со следующим кодом:
calculation.grid(row=0, column=1, columnspan = 3)
Button0.grid(row=1, column=1, sticky="ew")
Button1.grid(row=1, column=2, sticky="ew")
Button2.grid(row=1, column=3, sticky="ew")
root.grid_columnconfigure((0, 4), weight=1)
