Tkinter Frame容器grid布局並使用Scrollbar滾動


Tkinter Frame容器grid布局並使用Scrollbar滾動

原理:由於只有Scrollbar只能和Text、Canvas、Listbox一起使用,因此將Canvas作為父容器,通過滾動Canvas來滾動Frame。

from tkinter import *

if __name__ == '__main__':
    # 創建主窗口
    root = Tk()
    root.geometry("20x200+100+100")
    # Canvas,Scrollbar放置在主窗口上
    canvas = Canvas(master=root)
    scro = Scrollbar(master=root)
    scro.pack(side='right',fill='y')
    canvas.pack(side='right')
    # Frame作為容器放置組件
    frame = Frame(canvas)
    frame.pack()
    # 將Frame添加至Canvas上
    canvas.create_window((0,0),window=frame,anchor="nw")
    # 添加按鈕,以grid布局
    button1 = Button(master=frame,text='1').grid(row=1,column=0)
    button2 = Button(master=frame,text='2').grid(row=2,column=0)
    button3 = Button(master=frame,text='3').grid(row=3,column=0)
    button4 = Button(master=frame,text='4').grid(row=4,column=0)
    button5 = Button(master=frame,text='5').grid(row=5,column=0)
    button6 = Button(master=frame,text='x').grid(row=6,column=0)
    button7 = Button(master=frame,text='y').grid(row=7,column=0)
    button8 = Button(master=frame,text='z').grid(row=8,column=0)
    button9 = Button(master=frame,text='@').grid(row=9,column=0)
    button10 = Button(master=frame,text='#').grid(row=10,column=0)
    # 更新Frame大小,不然沒有滾動效果
    frame.update()
    # 將滾動按鈕綁定只Canvas上
    canvas.configure(yscrollcommand=scro.set, scrollregion=canvas.bbox("all"))
    scro.config(command=canvas.yview)

    root.mainloop()

最后效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM