水平和垂直滾動 Canvas 小部件
原理與 Text 小部件基本相同,但是 Grid
佈局用於將滾動條放在小部件周圍。
canvas = tk.Canvas(parent, width=150, height=150)
canvas.create_oval(10, 10, 20, 20, fill="red")
canvas.create_oval(200, 200, 220, 220, fill="blue")
canvas.grid(row=0, column=0)
scroll_x = tk.Scrollbar(parent, orient="horizontal", command=canvas.xview)
scroll_x.grid(row=1, column=0, sticky="ew")
scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)
scroll_y.grid(row=0, column=1, sticky="ns")
canvas.configure(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)
與 Text 小部件不同,Canvas 的可滾動區域在其內容被修改時不會自動更新,因此我們需要定義它並使用 scrollregion
引數手動更新它:
canvas.configure(scrollregion=canvas.bbox("all"))
canvas.bbox("all")
返回適合整個畫布內容的矩形座標。