Я новичок в python, так что терпите меня. Я везде искал, но не могу найти решение своей проблемы.
Я пытаюсь создать загрузчик GUI, используя python 3 и tkinter, и мне нужно добавить полосу прокрутки во фрейм с загруженными файлами. Мне удалось sh это сделать, но единственная проблема в том, что я не могу заставить виджеты внутри прокручиваемого фрейма заполнять всю его длину. Вот изображение
Это код, который у меня есть.
from tkinter import *
from tkinter.ttk import Progressbar
window=Tk()
window.geometry("800x500")
frame=Frame(window)
frame.pack(fill="both",expand=True)
headerframe=Frame(frame,bg="black")
container=Frame(frame)
button=Button(headerframe,text="This is an example",bg="blue",fg="white",padx=10,pady=10)
button.grid(row=0,column=0,sticky="nsew",padx=10,pady=10)
headerframe.grid_columnconfigure(0,weight=1)
headerframe.pack(fill="x")
canvas = Canvas(container)
scrollbar = Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = Frame(canvas)
container.pack(fill="both",expand=True)
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)
frame2=Frame(scrollable_frame, bg="black")
frame2.pack(fill="both",expand=True)
fileframe=Frame(scrollable_frame,bg="orange")
label=Label(fileframe, text="1", bg="orange")
label.grid(row=0,column=0,rowspan=2)
title=Label(fileframe,text="filename",padx=5,bg="orange",anchor="w")
title.grid(row=0,column=1,sticky="nsew")
progress=Progressbar(fileframe)
progress['value']=0
progress.grid(row=1,column=1,sticky="nsew")
labelPercentage=Label(fileframe,text="0 %",padx="5",anchor="w",bg="orange",fg="white")
labelPercentage.grid(row=0,column=2)
labelsize=Label(fileframe,text="0 KB",padx="5",anchor="w",bg="orange",fg="white")
labelsize.grid(row=1,column=2)
fileframe.pack(fill="x")
fileframe.columnconfigure(1,weight=1)
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")
window.mainloop()
Кто-нибудь может мне помочь? Я читал, что есть разница между прокручиваемой областью и прокручиваемой рамкой, и я очень смущен. Спасибо.