Canvas 画布上带有框架的滚动条

Canvas 画布上带有框架的滚动条,canvas,tkinter,scrollbar,frame,Canvas,Tkinter,Scrollbar,Frame,我在画布上有一个滚动条。在画布上我有一个框架。滚动条移动帧的内容,但滚动动作并不局限于它无限上下滚动的帧的大小。此外,滚动条上的拇指是滚动条的整个大小。这个问题我猜会得到纠正,一旦我能弄清楚如何告诉滚动条滚动区域是什么 outside_frame = Frame(self.master) outside_frame.pack(fill=X, padx=20) vscrollbar = Scrollbar(outside_frame, width = 20,orient=VERTICAL) vs

我在画布上有一个滚动条。在画布上我有一个框架。滚动条移动帧的内容,但滚动动作并不局限于它无限上下滚动的帧的大小。此外,滚动条上的拇指是滚动条的整个大小。这个问题我猜会得到纠正,一旦我能弄清楚如何告诉滚动条滚动区域是什么

outside_frame = Frame(self.master)
outside_frame.pack(fill=X, padx=20)

vscrollbar = Scrollbar(outside_frame, width = 20,orient=VERTICAL)
vscrollbar.pack(fill=Y,side=RIGHT, expand=FALSE)

canvas_files = Canvas(outside_frame,bd=0,yscrollcommand=vscrollbar.set)
canvas_files.pack(side=LEFT, fill=BOTH, expand=TRUE)
vscrollbar.config(command=canvas_files.yview)

canvas_files.xview_moveto(0)
canvas_files.yview_moveto(0)      


frame_files=Frame(canvas_files)
frame_files_id = canvas_files.create_window(0 ,0, window=frame_files, anchor=NW)

滚动区域
选项添加到画布,例如:

scrollregion=(0,0,500,500)

因此,我唯一能做的就是为创建的每一行文件在滚动区域中添加100。这解决了问题,滚动条按预期工作。无论我把bbox(“全部”)放在哪里,它都不起作用。我相信这是解决问题的“正确”方法,但我正在继续。感谢大家的帮助,为我指明了正确的方向。

这里的问题是帧大小没有固定。它是一个自定义文件选择器,其高度随文件数的不同而变化。我尝试了canvas_files.configure(scrollregion=canvas_files.bbox(“全部”)),它限制了滚动区域,但没有将其设置为正确的值。我添加了scrollregion=(0,03001000),这基本上解决了我的问题,但我需要将高度动态设置为帧的高度,该高度将发生变化。如果您这样做,
scrollregion=canvas.bbox(“全部”)
一旦框架可见,滚动区域将与画布中对象的大小完全匹配。这通常是通过绑定到内部框架上的
事件来完成的,因为当框架改变大小时,甚至会触发该事件。@MFerrero199我看不出您是如何在当前代码中将新文件添加到画布上的,但如果它是一个函数,请在函数体的末尾添加
.bbox(“全部”)
。我相信这一定能让你达到目的!在stackoverflow上有很多这样的例子。他们都没有帮助吗?