大家好,我是IKUN的真愛粉,有時候我們需要在tkinter上加滾動條,那麼怎麼制作呢,我們先看下面的視訊展示效果,是不是你想要的
展示
感覺制作的略微粗糙,各位可以後期自己慢慢調整
建立滾動條重要的步驟是:
1、建立畫布:
canvas = Canvas(tk) # 建立畫布
2、建立滾動條:
myscrollbar = Scrollbar(tk, orient="vertical", command=canvas.yview) # 建立滾動條
3、畫布上加上滾動條:
canvas.configure(yscrollcommand=myscrollbar.set)
我這個代碼是将一個非常長的清單内容,用Label控件顯示文本,然後加上滾動條,僅僅是作為一個參考!
我的實戰代碼,用在了這篇部落格:點我檢視(python+tkinter讀取excel選取自己需要的列并儲存)
奉上完整版代碼:
import tkinter
from tkinter import *
head = ["我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本",
"我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本",
"我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本",
"我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本", "我是文本",
]
tk = tkinter.Tk()
tk.geometry("770x670")
canvas = Canvas(tk) # 建立畫布
canvas.place(x=0, y=0, height=670, width=500)
myscrollbar = Scrollbar(tk, orient="vertical", command=canvas.yview) # 建立滾動條
myscrollbar.place(x=500, y=0, height=670)
canvas.configure(yscrollcommand=myscrollbar.set)
rollFrame = Frame(canvas) # 在畫布上建立frame
name_list = []
name_list2 = []
for n in range(len(head)):
name_list.append("a" + str(n))
name_list2.append("b" + str(n))
for i in range(len(head)):
name_list2[i] = IntVar()
name_list[i] = Label(rollFrame, text=head[i])
name_list[i].pack()
def myfunction(event):
canvas.configure(scrollregion=canvas.bbox("all"), width=100, height=670)
canvas.create_window((0, 0), window=rollFrame, anchor='nw') # 要用create_window才能跟随畫布滾動
rollFrame.bind("<Configure>", myfunction)
tk.mainloop()