2016-09-09 135 views
-2

我在畫布上有滾動條。在畫布上我附上了一個框架。滾動條移動框架的內容但是滾動動作並不侷限於無限上下滾動的框架的大小。此外,滾動條上的拇指是滾動條的整個大小。一旦我能弄清楚如何告訴滾動條滾動區域是什麼,我猜測這個問題將被糾正。畫布上的滾動條與框架

outside_frame = Frame(self.master) 
outside_frame.pack(fill=X, padx=20) 

vscrollbar = Scrollbar(outside_frame, width = 20,orient=VERTICAL) 
vscrollbar.pack(fill=Y,side=RIGHT, expand=FALSE) 

canvas_files = Canvas(outside_frame,bd=0,yscrollcommand=vscrollbar.set) 
canvas_files.pack(side=LEFT, fill=BOTH, expand=TRUE) 
vscrollbar.config(command=canvas_files.yview) 

canvas_files.xview_moveto(0) 
canvas_files.yview_moveto(0)  


frame_files=Frame(canvas_files) 
frame_files_id = canvas_files.create_window(0 ,0, window=frame_files, anchor=NW) 
+0

在stackoverflow上有很多這樣的例子。他們都沒有幫助嗎? –

回答

0

添加scrollregion選項,你的畫布,例如:

scrollregion=(0,0,500,500) 
+0

這裏的問題是幀大小不固定。這是一個自定義文件選擇器,根據文件數量的不同,其高度也會有所不同。我試過canvas_files.configure(scrollregion = canvas_files.bbox(「all」)),它限制了滾動區域,但沒有達到正確的值。 – MFerrero199

+0

我添加了scrollregion =(0,0,300,1000),它主要解決了我的問題,但我需要使高度動態變化到框架的高度。 – MFerrero199

+0

如果您在框架可見時執行'scrollregion = canvas.bbox(「all」)',那麼scrollregion將完全匹配畫布中對象的大小。這通常是通過綁定到內部框架上的''事件來完成的,因爲每當框架改變大小時它甚至會觸發。 –

0

所以,只想到我能得到的工作是增加100到滾動區域的創建的文件的每一行。這解決了問題,滾動條按預期工作。無論我在哪裏放置,bbox('all')都不起作用。我相信這將是解決問題的「正確」方式,但我正在繼續。感謝大家的幫助,指引我朝着正確的方向前進。