import customtkinter as ctk
app = ctk.CTk()
def resize_frame(event):
# Растягиваем frame на всю площадь canvas
canvas.itemconfig(frame_id, width=event.width-2*padx)
# Ширина и высота отступов
padx =20
pady = 20
# Canvas
canvas = ctk.CTkCanvas(app, bg="blue", highlightthickness=0)
canvas.pack(fill='both', expand=True, padx=padx, pady=pady)
# Функция привязки изменения размера Canvas
canvas.bind('<Configure>', resize_frame)
main_frame = ctk.CTkFrame(app, bg_color='white')
frame_id = canvas.create_window((20, 20), window=main_frame, anchor='nw')
scrollbar = ctk.CTkScrollbar(app, command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)
scrollbar.place(relx=1, rely=0, relheight=1, anchor='ne')
# наполнение
for i in range(40):
ctk.CTkButton(main_frame, text='Click Me').pack(pady=10)
canvas.update_idletasks()
canvas.configure(scrollregion=canvas.bbox("all"))
app.mainloop()