Python tkinter滚动条不能很好地附加到列表框

时间:2012-06-07 16:10:51

标签: python listbox scrollbar tkinter

所以,我正在做其他人说的话:

scrollbar = Scrollbar(frame)

scrollbar.pack(side=RIGHT, fill=Y)

listbox = Listbox(frame, yscrollcommand=scrollbar.set)

listbox.pack()

scrollbar.config(command=listbox.yview)

但似乎滚动条附加到整个框架而不是列表框本身... 我唯一能做的就是使用scrollbar.place()而不是pack 并将它放在列表框旁边,但它们只是一个1尺寸的滚动条,它不会覆盖列表框Y-bar只是它的一部分,这很难看......

有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要将滚动条附加到框架上 - 但您可以轻松创建一个新框架以仅保留滚动条和列表框。

e.g。

myframe=Frame(frame)
myframe.pack(side=RIGHT, fill=Y)
scrollbar = Scrollbar(myframe) 
scrollbar.pack(side=RIGHT, fill=Y)
listbox = Listbox(myframe, yscrollcommand=scrollbar.set) 
listbox.pack()
scrollbar.config(command=listbox.yview)

答案 1 :(得分:1)

小部件不会相互连接,它们只占用容器内的空间。如果您打包右侧的滚动条,然后将列表框打包在右侧,它们将显示为已附加。您也可以将列表框放在左侧并使其填充水平方向,或者如果它填充两个方向,您可以将其打包到任何位置。

您也可以使用grid而不是pack;只是安排他们在相邻的列。

所以,不要想到“附加”小部件,考虑将它们放在容器中。