2012-06-07 85 views
0

SO,我在做什麼其他人說:Python的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()而不是包 並將它放在列表框的旁邊,但它們只是一個1尺寸的滾動條,並且它不包含列表框僅限於Y欄它的一部分,這是醜陋的...

任何人都可以幫助嗎?

謝謝!

回答

2

您確實需要將滾動條附加到框架上 - 但您可以輕鬆創建一個新的框架來僅保留滾動條和列表框。

例如

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) 
+0

mmmm ...框架內的一個框架... 我會馬上檢查 – keizer

+0

@keizer - 框架可以嵌套,但是你想要它們的深度。他們對於用Tkinter創建複雜的佈局非常重要。 – mgilson

+0

沒有工作 - 再次,它附加到主框架:( – keizer

1

小部件互不相連,它們只佔用容器內的空間。如果您將滾動條打包在右側,然後將右側的列表框打包,它們將顯示爲已連接。您也可以將列表框放在左側並使其填充水平方向,或者如果它填充到兩個方向,則可以將其包裝在任何位置。

您也可以使用網格代替包裝;只是安排他們在相鄰的列。

因此,不要想到「附加」窗口小部件,請考慮將它們放在容器中。