2014-01-08 51 views
3

如何強制Tkinter應用程序窗口中的列寬度相等?如何使用Tkinter在Python 2.7中創建等寬列

的tkdocs網站狀態如下:

每一列(或高度各行的)的寬度取決於包含在所述列或行中的微件的寬度或高度。這意味着在繪製出用戶界面並將其分割成行和列時,不需要擔心每列或行的寬度(或高度,大概)相等。

http://www.tkdocs.com/tutorial/grid.html

但我想列相等的寬度,優選地通過使寬度所有任何柱取決於最寬的窗口小部件。有沒有一種方法可以乾淨地實現這個目標(即不是通過細胞填充來玩耍,直到我通過反覆試驗或者任意地爲每列指定一個明顯足夠的最小寬度來獲得它們)?此外,是否可以選擇性地爲網格中的某些列(但不是所有列)完成此操作(例如,以便根據列X Y中的最寬部件來確定列的大小,但列Z的大小應根據Z欄中最寬的部件)?

回答

7

要使網格佈局的所有列具有相同的寬度,您必須將這些列配置爲具有相同的權重並且處於相同的統一組中。此配置與主控件相關聯,而不是任何包含的控件(因爲列當然可以包含許多控件)。

在標準Tk的,這是用做:

# "fred" is just some arbitrary key; it means nothing other than to name the group 
grid columnconfigure $master 0 -weight 1 -uniform fred 

在Tkinter的(注意:uniform似乎not documented in the docstring但它正是你所需要的):

# "fred" is just some arbitrary key; it means nothing other than to name the group 
master.grid_columnconfigure(0, weight=1, uniform="fred") 

然後重複了其他列索引,你想設置的東西。 (正如你所看到的,在這兩種情況下代碼的非常類似)。

+0

感謝您的答案,這似乎是正確的 - 因此我接受了它。我發現它不能解決我的問題,但我相信那是因爲我的一些列由一個小部件組成。但是,如何處理這個問題屬於另一個問題。 –

+0

我在這裏添加了另一個問題,使多列小部件問題明確:http://stackoverflow.com/questions/21009232/how-to-make-tkinter-columns-of-equal-width-when-widgets-span -multiple-columns-p –

+0

輝煌,謝謝! – SzieberthAdam

相關問題