2014-01-13 38 views
2

我使用網格管理器方法在tkinter中構建了一個相當大的GUI。我需要在整個窗口中添加一個滾動條,並且我有一些麻煩。這裏是使用Tkinter中的網格管理器的滾動條的非常粗糙的版本(我不想滾動列表框,我想滾動整個Tk窗口)。如何在tkinter窗口上使用網格管理器時實現滾動條

import Tkinter 
from Tkinter import * 

Tk = Tkinter.Tk 
self=Tk() 
listbox = Listbox(self, width = 10, height = 60) 
listbox.grid(row =0, column=0) 
scrollbar = Scrollbar(self) 
scrollbar.grid(sticky=E, row = 0, rowspan = 100, column = 11, ipady = 1000) 
mainloop() 

是否有可能以固定的Tkinter窗口大小(使用網格管理器),並添加一個滾動條這然後允許用戶查看附加內容?窗口太大,需要查看額外的內容,所以我看到的唯一選擇是滾動條。我只看到使用pack方法的例子。正如你大概可以猜到我是Tkinter的新手,並會很感激任何輸入。

感謝所有提前。

+0

可能重複的[Python框架的Tkinter滾動條](http://stackoverflow.com/questions/16188420/python-tkinter-scrollbar-for-frame) –

回答

2

您無法滾動根窗口,Toplevel窗口或Frame的全部內容。解決方法是將所有小部件放在畫布中,然後在畫布上添加一個滾動條。有這個網站上的問題給出的例子,如Python Tkinter scrollbar for frame

+0

因此,如果我使用.grid方法或網格管理器來佈置所有GUI小部件,我必須使用畫布和.pack方法轉換GUI?無論如何添加一個按鈕,只是將根的視圖移動到底部邊緣(即時猜測不)?我希望避免重組整個項目。謝謝你的幫助。 – user2860797

+1

@ user2860797:不完全。您仍然使用網格將所有小部件放在一個框架中。不要將它們直接放在根中,而要放在一個框架中。然後,您將該框架放入畫布中,以便可以滾動它。因此,而不是root.listbox,您將以root.canvas.frame.listbox結束。這聽起來很複雜,但事實並非如此。 –

相關問題