我的目標是添加一個垂直滾動條到框架中,框架中有幾個標籤。一旦框架內的標籤超過框架的高度,滾動條應自動啓用。經過搜索,我發現this有用的職位。基於這篇文章,我明白,爲了實現我想要的,(糾正我,如果我錯了,我是一個初學者)我必須先創建一個框架,然後在該框架內創建一個畫布,並將滾動條粘到那框架以及。之後,創建另一個框架並將其作爲窗口對象放在畫布內。所以,我終於想出這個框架的Python Tkinter滾動條
from Tkinter import *
def data():
for i in range(50):
Label(frame,text=i).grid(row=i,column=0)
Label(frame,text="my text"+str(i)).grid(row=i,column=1)
Label(frame,text="..........").grid(row=i,column=2)
def myfunction(event):
canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200)
root=Tk()
sizex = 800
sizey = 600
posx = 100
posy = 100
root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
myframe=Frame(root,relief=GROOVE,width=50,height=100,bd=1)
myframe.place(x=10,y=10)
canvas=Canvas(myframe)
frame=Frame(canvas)
myscrollbar=Scrollbar(myframe,orient="vertical",command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)
myscrollbar.pack(side="right",fill="y")
canvas.pack(side="left")
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>",myfunction)
data()
root.mainloop()
- 我這樣做對嗎?有更好/更聰明的方法來實現這個代碼給我的輸出嗎?
- 爲什麼我必須使用網格方法? (我嘗試了放置方法,但沒有任何標籤出現在畫布上。)
- 在畫布上創建窗口時,使用anchor ='nw'有什麼特別之處?
請保持您的答案簡單,因爲我是初學者。謝謝你的幫助。
你擁有了它向後你的問題,儘管代碼乍看上去是正確的。您必須創建一個框架,將其嵌入到畫布中,然後將滾動條附加到畫布上。 – 2013-04-24 11:07:37
[將滾動條添加到Tkinter中的窗口小部件的網格]的可能的重複(http://stackoverflow.com/questions/3085696/adding-a-scrollbar-to-a-grid-of-widgets-in-tkinter) – 2013-08-26 15:56:49
@TrevorBoydSmith有很多東西這是一個潛在的重複,但我投票關閉這是一個不同的似乎有最好的答案的副本:http://stackoverflow.com/questions/1873575/how-could -i-get-a-frame-with-a-scrollbar-in-tkinter – ArtOfWarfare 2015-05-03 15:59:34