Метод grid() позволяет поместить виджет в определенную ячейку условной сетки или грида.
Метод grid применяет следующие параметры:
Например, определим грид из 9 кнопок:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("250x200")
for r in range(3):
for c in range(3):
btn = ttk.Button(text=f"({r},{c})")
btn.grid(row=r, column=c)
root.mainloop()
Здесь в цикле создается девять кнопок, каждая из которых помещается в свою ячейку. В итоге у нас получится следующий грид
По умолчанию для каждой ячейки выделяется столько места, сколько необходимо для виджета в ней. Соответственно мы получаем небольшую таблицу и много пустого места вне грида, что, возможно, смотрится не лучшим образом. И ситуация усугубляется, если мы попробуем растянуть окно - появится еще больше пустого пространства. Чтоюбы решить эту проблему, надо сконфигурировать грид у контейнера.
Для конфигурации грида в контейнере применяются два метода:
container.columnconfigure(index, weight)
container.rowconfigure(index, weight)
Метод columnconfigure()
настраивает столбец. В качестве параметра index метод получает индекс столбца, а через параметр weight устанавливает его вес. Столбцы распределяются по всей ширине контейнера в соответствии со своим весом.
Метод rowconfigure()
настраивает строку аналогичным образом. В качестве параметра index метод получает индекс строки, а через параметр weight устанавливает ее вес. Строки распределяются по всей длине контейнера в соответствии со своим весом.