我的目标是添加一个垂直滚动条到框架中,框架中有几个标签。一旦框架内的标签超过框架的高度,滚动条应自动启用。经过搜索,我发现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