Размещение кнопок сеткой со скролом Python, grid, canvas

С python только знакомлюсь. Не могу понять почему кнопки размещаются списком не сеткой

button_list = list()
for i in self.__position_list.get_position_list():
    b = tk.Button(frame_button, text=i.get_name(), width="20", font=('Arial', 12), command=lambda i=i: self.add_button_list_clicked(i.get_position()))
    button_list.append(b)

r = 0
for i in button_list:
    for j in range(0, 3):
        i.grid(row=r, column=j)
    r += 1

Полный блок кода

frame_main = tk.Frame(self.main_window) frame_main.place(x=550, y=30)

 canvas = tk.Canvas(frame_main, width=572, height=465)
canvas.grid(row=0, column=0)

vsb = tk.Scrollbar(frame_main, orient="vertical", command=canvas.yview)
vsb.grid(row=0, column=1, sticky='ns')
canvas.configure(yscrollcommand=vsb.set)

frame_button = tk.Frame(canvas)
canvas.create_window((1, 0), window=frame_button, anchor='nw')

button_list = list()
for i in self.__position_list.get_position_list():
    b = tk.Button(frame_button, text=i.get_name(), width="20", font=('Arial', 12), command=lambda i=i: self.add_button_list_clicked(i.get_position()))
    button_list.append(b)

r = 0
for i in button_list:
    for j in range(0, 3):
        i.grid(row=r, column=j)
    r += 1

frame_button.update_idletasks()

frame_main.config(width=1, height=1)

canvas.config(scrollregion=canvas.bbox("all"))

Ответы (0 шт):