grid
имеет несколько задокументированных параметров, которые помогут вам сделать то, что вы хотите. Вам просто нужно их использовать.
По умолчанию grid
не даст виджетам никакого дополнительного пространства - они занимают только необходимое им пространство и не более. Если для ваших виджетов должно быть выделено дополнительное пространство, вы должны явно организовать это.
Например, если вы хотите, чтобы все виджеты одинаково увеличивались и уменьшались, вам необходимо настроить одинаковые значения для строк и столбцов weight
больше нуля. Это скажет сетке, как распределить любое дополнительное пространство, когда окно больше размера, запрошенного всеми виджетами.
Например:
root.grid_rowconfigure((1,2), weight=1)
root.grid_columnconfigure((1,2), weight=1)
Это просто говорит grid
, чтоделать с лишним пробелом. Если вместо этого вы хотите, чтобы две или более строки или столбцы имели одинаковый размер, вы можете использовать опцию uniform
, чтобы сообщить grid
, что вы хотите, чтобы строки или столбцы имели одинаковый (одинаковый) размер.
Например, если вы хотите, чтобы оба столбца 1 и 2 имели одинаковую ширину, вы можете присвоить каждому столбцу одинаковое значение для параметра uniform
. Примечание: значение, переданное uniform
, может быть любым. Важно то, что они настроены на одинаковое значение.
root.grid_columnconfigure((1, 2), uniform="equal")
Это само по себе не решит проблему. Вы также должны указать grid
, что хотите, чтобы виджеты заполняли предоставленное им пространство. Это делается с помощью параметра sticky
, который указывает сетке «прикреплять» виджет к одной или нескольким сторонам выделенного пространства.
Чтобы заставить виджеты заполнить все выделенное пространство, вы можете задать строку "nsew"
, что означает "север, юг, восток и запад", которые представляют четыре стороны данного пространства.
first_textbox = tk.Text(root, width=25, height=10, bg='yellow')
second_textbox = tk.Text(root, width=25, height=10, bg='blue')
third_textbox = tk.Text(root, width=50, height=20, bg='red')