简体   繁体   English

tkinter画布滚动但滚动条无法调整以显示画布大小

[英]tkinter canvas scrolling but scrollbar not adjusting to show canvas size

i am trying to place a frame within a canvas with a scroll bar, the canvas scrolls but the scrollbar does not adjust to show the position 我正在尝试使用滚动条在画布中放置框架,画布会滚动,但滚动条不会调整以显示位置

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()

您将滚动区域设置为-15像素高(将可滚动区域的右下角设置为可滚动区域的上方)

终于让它工作了,我使用了list.update_idletasks()设置滚动区域之前

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM