2011-02-22 141 views
1

我正在使用Python Tkinter,並且希望在框架或畫布中放置可變數量的文本框小部件。文本框被垂直包裝在框架中,所以第一個在頂部,第二個在下面,等等。我可以在GUI的「左邊部分」中擁有所有按鈕,列表框等widget,而一個「右側部分」將只包含文本框小部件。當主窗口最大化時,我想讓文本框小部件水平展開,但由於這些小部件的數量是可變的,因此包含文本框的「右部分」也需要能夠垂直滾動以全部查看它們。Python Tkinter - 包含可擴展小部件的可滾動畫布

目前,我正在使用Canvas.create_window將可變數量的文本框添加到畫布,並且當我可以滾動畫布以查看所有文本框時,在調整窗口大小時它們不會水平展開。我有一個替代的圖形用戶界面,它爲「右部分」使用了一個框架,它允許小部件進行水平擴展,但是如果打包太多,我無法滾動框架以查看其他文本框,因爲我無法滾動酒吧綁在一個框架上。

有沒有辦法解決這個問題?

回答

0

該解決方案非常簡單:綁定到畫布的<Configure>事件 - 這將導致您的回調在調整畫布窗口小部件時被調用。然後您只需獲取畫布的寬度並使用它來迭代調整所有嵌入式窗口的大小。

+0

我假設要綁定到畫布的事件,我只需鍵入:canvas.bind(「」)。爲了獲得畫布的寬度,我可以使用canvas.cget(「width」)。我不確定如何使用寬度來調整所有嵌入文本框的大小。 – dmranck 2011-02-22 20:23:42