Да, есть много вопросов об стеке потока, я видел все, но не смог заставить это работать, поэтому я задаю новый вопрос с моим кодом:
В основном я хочу создать таблицу в tkinter с 4 столбцами. Но я хочу иметь возможность прокрутить это, потому что строки будут позже взяты из базы данных MySQL. но я не могу заставить работать свиток.
Вот мой код:
from tkinter import *
root = Tk()
root.geometry("700x600")
frame_canvas = Frame(root)
frame_canvas.rowconfigure(0, weight=1)
frame_canvas.columnconfigure(0, weight=1)
frame_canvas.grid(row=0, column=0, sticky="news")
canvas = Canvas(frame_canvas)
canvas.grid(row=0, column=0, sticky="news")
vsb = Scrollbar(frame_canvas, orient="vertical", command=canvas.yview)
vsb.grid(row=0, column=1, sticky='ns')
canvas.configure(yscrollcommand=vsb.set)
for i in range(0, 50):
for j in range(0, 4):
canvas.columnconfigure(j, minsize=150)
Label(canvas, text="hello"+str(i)+str(j)).grid(row=i, column=j)
canvas.config(scrollregion=canvas.bbox("all"))
app = root
root.mainloop()
Как получить холст для прокрутки? Есть ли другой способ создать таблицу? Также позже, если я хочу добавить строку в конец таблицы, как это возможно? или я должен очистить весь холст и повторно сделать его или что-то?
EDIT
Добавили рамку окна на холст. Все еще прокрутка не будет работать. Это может быть проблемой сейчас?
from tkinter import *
root = Tk()
root.geometry("700x600")
frame_canvas = Frame(root)
frame_canvas.rowconfigure(0, weight=1)
frame_canvas.columnconfigure(0, weight=1)
frame_canvas.grid(row=0, column=0, sticky="news")
canvas = Canvas(frame_canvas, height=600, width=500)
canvas.grid(row=0, column=0, sticky="news")
vsb = Scrollbar(frame_canvas, command=canvas.yview, orient="vertical")
vsb.grid(row=0, column=1, sticky='ns')
canvas.configure(yscrollcommand=vsb.set)
frame2 = Frame(canvas, bg="powder blue", height=600, width=700)
canvas.create_window((0, 0), anchor="nw", height=600, width=600, window=frame2)
for i in range(0, 50):
for j in range(0, 4):
frame2.columnconfigure(j, minsize=120)
Label(frame2, bg="powder blue", text="hello"+str(i)+str(j)).grid(row=i, column=j)
canvas.config(scrollregion=frame2.bbox("all"))
app = root
root.mainloop()