問題背景:當界面需要顯示的內容較多時,需要用到滾動條Scrollbar,官方文檔說Scrollbar只能與以下控件(canvas, entry, listbox, text)相結合。但是,如果我想讓Scrollbar和frame相結合呢?
解決辦法是:把frame放在canvas裏面(比如填滿整個canvas),canvas與scrollbar結合,這樣滾動canvas就等於滾動frame了。
舉個栗子
canvas=Canvas(root,width=200,height=180,scrollregion=(0,0,520,520)) #創建canvas
canvas.place(x = 75, y = 265) #放置canvas的位置
frame=Frame(canvas) #把frame放在canvas裏
frame.place(width=180, height=180) #frame的長寬,和canvas差不多的
vbar=Scrollbar(canvas,orient=VERTICAL) #豎直滾動條
vbar.place(x = 180,width=20,height=180)
vbar.configure(command=canvas.yview)
hbar=Scrollbar(canvas,orient=HORIZONTAL)#水平滾動條
hbar.place(x =0,y=165,width=180,height=20)
hbar.configure(command=canvas.xview)
canvas.config(xscrollcommand=hbar.set,yscrollcommand=vbar.set) #設置
canvas.create_window((90,240), window=frame) #create_window
當然,如果是純文本的滾動,可以選擇scrolltext組件,它的函數和text一樣,可以參考一下這個鏈接 https://www.jianshu.com/p/abea88607525