Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter:Canvas滚动条出现但不显示';行不通_Python_Tkinter - Fatal编程技术网

Python tkinter:Canvas滚动条出现但不显示';行不通

Python tkinter:Canvas滚动条出现但不显示';行不通,python,tkinter,Python,Tkinter,我一直在尝试将滚动条添加到包含单个框架的画布中,这个框架就是用来存放小部件的。我添加了正确显示的滚动条,但它在画布上没有效果 area2=Frame(border2,bg="#FAFAFA") area2.pack(side="top",fill=BOTH,expand=True) scrollbar=Scrollbar(area2) scrollbar.pack(side='right',fill=Y) scrollcanvas=Canvas(area2,height=1500,yscro

我一直在尝试将滚动条添加到包含单个框架的画布中,这个框架就是用来存放小部件的。我添加了正确显示的滚动条,但它在画布上没有效果

area2=Frame(border2,bg="#FAFAFA")
area2.pack(side="top",fill=BOTH,expand=True)

scrollbar=Scrollbar(area2)
scrollbar.pack(side='right',fill=Y)

scrollcanvas=Canvas(area2,height=1500,yscrollcommand=scrollbar.set)
scrollcanvas.pack(side='left',fill=BOTH,expand=True)

scrollcanvasframe=Frame(scrollcanvas)
scrollcanvasframe.pack(side='top',fill=BOTH,expand=False)

v2=IntVar()
Label(scrollcanvasframe,textvariable=v2,bg="#FAFAFA").pack(side="top")

canvas2=Canvas(scrollcanvasframe,width=800,height=566,bg='white')
canvas2.pack(side="top")
canvas3=Canvas(scrollcanvasframe,width=800,height=566,bg='grey')
canvas3.pack(side="top")

scrollbar.config(command=scrollcanvas.yview)
scrollcanvas.config(yscrollcommand=scrollbar.set,scrollregion=(0,0,1000,1500))
我认为这个问题可能与最后添加的scrollregion有关,因为画布会扩展以适合放置在其中的框架


我也尝试过在这里查看各种帖子,但似乎没有任何帮助。

您正在尝试将包含各种其他小部件的框架嵌入到画布中,以便可以滚动。但是,在创建
scrollcanvasframe
后,使用将其打包,这是不正确的。画布本身就是一个几何管理器,让画布管理另一个小部件的正确方法是使用
create\u window

在这种情况下,卸下scrollcanvasframe.pack调用并更换,如图所示:

#scrollcanvasframe.pack(side='top',fill=BOTH,expand=False)
scrollcanvas.create_window((5, 5), window=scrollcanvasframe, anchor=NW)
这将在画布中的位置5,5处为框架小部件创建一个占位符,并将锚点设置到对象的左上角(默认情况下,它是中心)。 现在小部件由画布管理,并将与任何其他元素一起滚动。您可以通过在上面添加一个矩形或一条线来测试这一点,并看到它也在滚动


打包到
scrollcanvasframe
中的其他小部件都很好。它们由框架管理。

您所说的“不工作”和“无效”是什么意思?滚动条出现,我可以上下拖动滚动条,但这对画布没有影响。您确定已将滚动条绑定到正确的小部件吗?看起来你把它绑定到了你的框架(区域2)而不是你的画布上。我想我把滚动条打包在了区域2,这就是你所指的吗?这是错误的吗?这两张画布的每一张都使用了不同的画框。