Я хочу создать таблицу 20 x 5 с Tkinter и добавить полосу прокрутки. Каждый элемент таблицы соответствует виджету записи.
Мое решение работает только частично: полоса прокрутки добавлена правильно. Но вместо пяти показаны только три столбца, как вы можете видеть на рисунке ниже.
Разумеется, недостающие два столбца должны быть расположены так что они ниже ярлыков. Кто-нибудь из вас видит мою ошибку и знает, как ее исправить, чтобы получить желаемый результат:
from tkinter import *
root = Tk()
Label(root, text = "x").grid(row = 0, column = 0)
Label(root, text = "y").grid(row = 0, column = 1)
Label(root, text = "z").grid(row = 0, column = 2)
Label(root, text = "a").grid(row = 0, column = 3)
Label(root, text = "f(x,y,z;a)").grid(row = 0, column = 4)
container = Frame(root)
canvas = Canvas(container, height = 190)
scrollbar = Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = Frame(canvas)
scrollable_frame.bind(
"<Configure>",
lambda e: canvas.configure(
scrollregion=canvas.bbox("all")
)
)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
canvas.configure(yscrollcommand=scrollbar.set)
cells = {}
row, column = 20, 5
for i in range(row):
for j in range(column):
b = Entry(scrollable_frame)
b.grid(row = i + 1 , column = j, sticky = W + E)
cells[(i, j)] = b
container.grid(row = 1, column = 0, columnspan = 5)
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")
root.mainloop()