为什么我的Tkinter滚动条位于应该滚动的区域的顶部?

Leicontis

简而言之,我的问题是,在我正在编写的GUI中,滚动条重叠在框架的右边缘上方,而不是按预期的方式与框架相邻。我在这里做错了什么?一段代码重现了这个问题:


root=Tk()
root.title('Window Test')
root.grid_rowconfigure(0,weight=1)

overall=Frame(root)
overall.grid(row=0,column=0,sticky=N+E+S+W)
overall.grid_rowconfigure(0,weight=1)

outercanvas=Canvas(overall)
outercanvas.grid(row=0,column=0)
outerSframe=LabelFrame(outercanvas,text='Outer')
outerSB=Scrollbar(overall,command=outercanvas.yview)
outercanvas.config(yscrollcommand=outerSB.set)
outerSframe.bind('<Configure>',lambda e: outercanvas.configure(scrollregion=outercanvas.bbox('all')))
outercanvas.create_window((0,0),window=outerSframe,anchor=NW)
outerSB.grid(row=0,column=1,sticky=N+E+S)

innercanvas=Canvas(outerSframe)
innercanvas.grid(row=0,column=0)
innerSframe=LabelFrame(innercanvas,text='Inner')
innercanvas.create_window((0,0),window=innerSframe,anchor=NW)
Label(innerSframe,text='123456789012345678901234567890').pack()
acw1668

这是因为您的代码未指定的宽度outercanvas您应该根据outerSframe绑定到<Configure>事件内部回调的宽度设置其宽度

def on_frame_resize(event):
    bbox = outercanvas.bbox('all')
    outercanvas.config(scrollregion=bbox, width=bbox[2]) # update width as well

root=Tk()
root.title('Window Test')
root.grid_rowconfigure(0,weight=1)

overall=Frame(root)
overall.grid(row=0,column=0,sticky=N+E+S+W)
overall.grid_rowconfigure(0,weight=1)

outercanvas=Canvas(overall)
outercanvas.grid(row=0,column=0)
outerSframe=LabelFrame(outercanvas,text='Outer')
outerSB=Scrollbar(overall,command=outercanvas.yview)
outercanvas.config(yscrollcommand=outerSB.set)
outerSframe.bind('<Configure>', on_frame_resize) # changed to a function instead of lambda
outercanvas.create_window((0,0),window=outerSframe,anchor=NW)
outerSB.grid(row=0,column=1,sticky=N+E+S)

innercanvas=Canvas(outerSframe)
innercanvas.grid(row=0,column=0)
innerSframe=LabelFrame(innercanvas,text='Inner')
innercanvas.create_window((0,0),window=innerSframe,anchor=NW)
Label(innerSframe,text='123456789012345678901234567890').pack()

root.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的Tkinter滚动条不起作用?

来自分类Dev

为什么我的滚动框没有出现在滚动条的顶部?

来自分类Dev

为什么我的tkinter水平滚动条在右下角被挤压,但垂直滚动条看起来正常?

来自分类Dev

为什么我不应该在网站上显示滚动条?

来自分类Dev

伪元素水平滚动条位于div的顶部

来自分类Dev

为什么我的滚动条未总是正确绘制?

来自分类Dev

为什么我的滚动条看起来很古怪?

来自分类Dev

CSS:为什么我的滚动条高度为100%?

来自分类Dev

为什么我看不到滚动条的底部

来自分类Dev

为什么在我的网站上显示水平滚动条?

来自分类Dev

为什么我的UIScrollView水平滚动条不显示?

来自分类Dev

为什么我的滚动条看起来很古怪?

来自分类Dev

为什么我的div滚动条不起作用?

来自分类Dev

为什么滚动条是空的?

来自分类Dev

为什么我的滚动窗格没有滚动条?

来自分类Dev

为什么垂直滚动条不允许滚动?

来自分类Dev

当元素在顶部边框上溢出时,为什么没有滚动条?

来自分类Dev

Tkinter怪异的滚动条

来自分类Dev

Extjs滚动条自动向下滚动,阻止我滚动到顶部

来自分类Dev

Python Tkinter滚动条摇晃滚动

来自分类Dev

Tkinter滚动条不滚动

来自分类Dev

滚动条tkinter不滚动

来自分类Dev

Tkinter滚动条不滚动

来自分类Dev

Tkinter 滚动条不滚动

来自分类Dev

tkinter滚动条没有滚动条

来自分类Dev

我想在Tkinter的文本区域中有一个滚动条,但不确定以下代码有什么问题:

来自分类Dev

为什么Edge正文滚动条与Firefox正文滚动条不同?

来自分类Dev

粘性顶部导航创建滚动条

来自分类Dev

标题顶部的jqGrid水平滚动条

Related 相关文章

热门标签

归档