2016-09-01 177 views
0

我试图将一个滚动条,在画布上滚动画布内的框架,但滚动条不调整显示位置Tkinter的画布上滚动,但滚动条不调整显示画布大小

from tkinter import * 
from tkinter import ttk 
parent=Tk() 
studentFrame=ttk.Frame(parent) 
studentFrame.pack() 

#settup the canvas 
canvas=Canvas(studentFrame,width=700,height=300) 
scroller=ttk.Scrollbar(studentFrame, orient=VERTICAL,command=canvas.yview) 
canvas.grid(row=0,column=0,stick="nsew") 
scroller.grid(row=0,column=1,stick="ns") 
canvas.config(yscrollcommand=scroller.set) 
list=ttk.Frame(canvas,width=700) 
ttk.Label(list,text="S/N",width=10,relief=SUNKEN).grid(row=0,column=0,ipadx=3,ipady=3) 
ttk.Label(list,text="Name",width=55,relief=SUNKEN).grid(row=0,column=1,ipadx=3,ipady=3) 
ttk.Label(list,text="",width=15,relief=SUNKEN).grid(row=0,column=2,ipadx=3,ipady=3) 
ttk.Label(list,text="",width=15,relief=SUNKEN).grid(row=0,column=3,ipadx=3,ipady=3) 

num=0 
r=0 
while(r<50): 
    num=num+1 
    ttk.Label(list,text=num,width=10,relief=SUNKEN).grid(row=r,column=0,ipadx=3,ipady=3) 
    ttk.Label(list,text="NAME",width=55,relief=SUNKEN).grid(row=r,column=1,ipadx=3,ipady=3) 
    ttk.Label(list,text="EDIT",width=15,relief=SUNKEN).grid(row=r,column=2,ipadx=3,ipady=3) 
    ttk.Label(list,text="DELETE",width=15,relief=SUNKEN).grid(row=r,column=3,ipadx=3,ipady=3) 
    r=r+1 

canvas.create_window((0,0),window=list,anchor=W) 
canvas.config(scrollregion=canvas.bbox(ALL)) 
parent.mainloop() 
+0

如果您修改代码而不依赖于数据库,这将有所帮助。一个合适的[MCVE](http://www.stackoverflow.com/help/mcve)应该能够用完。数据来自数据库的事实与这个问题无关。 –

回答

0

你将滚动区域设置为-15像素高(您将可滚动区域的右下角设置为高于可滚动区域的顶部)

+0

我该如何解决这个问题 – user2999227

0

终于让它起作用我用过 list.update_idletasks() 设置滚动区域之前