Таблица с полосой прокрутки создана неправильно - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу создать таблицу 20 x 5 с Tkinter и добавить полосу прокрутки. Каждый элемент таблицы соответствует виджету записи.

Мое решение работает только частично: полоса прокрутки добавлена ​​правильно. Но вместо пяти показаны только три столбца, как вы можете видеть на рисунке ниже.

enter image description here

Разумеется, недостающие два столбца должны быть расположены так что они ниже ярлыков. Кто-нибудь из вас видит мою ошибку и знает, как ее исправить, чтобы получить желаемый результат:

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()
...