Если холст пуст, прокручивать нечего.И полоса прокрутки отражает это правильно.
Вы должны добавить что-то к Canvas
, чтобы прокрутить его.
Я поместил на два кадра больше размера окна, и теперь у вас есть что прокрутить.
Вы должны использовать scrollregion=
после того, как положите предметы на холст.Или вы можете использовать after()
для использования scrollregion=
после того, как tkinter
покажет окно.
import tkinter as tk
#def resize():
# canvas.configure(scrollregion=canvas.bbox("all"))
root = tk.Tk()
frame1 = tk.Frame(root, width=900, height=800)
frame1.pack(expand=True, fill='both')
canvas = tk.Canvas(frame1, width=900, height= 900)
canvas.pack(side='left', fill='both', expand=True)
vsb = tk.Scrollbar(frame1, orient='vertical')
vsb.pack(fill='y', side='right', expand=False)
vsb.configure(command=canvas.yview)
item_1 = tk.Frame(canvas, bg='red', width=500, height=500)
canvas.create_window(0, 0, window=item_1, anchor='nw')
item_2 = tk.Frame(canvas, bg='green', width=500, height=500)
canvas.create_window(500, 500, window=item_2, anchor='nw')
canvas.configure(yscrollcommand=vsb.set, scrollregion=canvas.bbox("all"))
#root.after(100, resize)
root.mainloop()