如何使用Tkinter在Python 2.7中创建等宽列

Wes*_*pse 5 python tk-toolkit tkinter tcl python-2.7

如何强制Tkinter应用程序窗口中的列宽度相等?

tkdocs网站声明如下:

每列的宽度(或每行的高度)取决于列或行中包含的小部件的宽度或高度.这意味着在草绘用户界面并将其划分为行和列时,您无需担心每个列或行的宽度相等[或高度,大概是].

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

但我希望列宽度相等,最好是使所有列的宽度取决于任何列中最宽的窗口小部件.有没有办法干净地实现这一点(即不是通过玩细胞填充,直到我通过反复试验得到它们或通过任意分配一个明显足够的最小宽度到每一列)?此外,可以选择性地对网格中的某些列(但不是所有列)执行(例如,使得列X Y的大小根据列X Y中最宽的小部件来确定,但是列Z的大小根据最宽的小部件来确定栏Z)?

Don*_*ows 13

要使网格布局使所有列具有相同的宽度,您必须将这些列配置为具有相同的权重并且位于相同的统一组中.此配置与主窗口小部件相关联,而不是任何包含的窗口小部件(因为列当然可以包含许多窗口小部件).

在标准Tk中,这可以通过以下方式完成:

# "fred" is just some arbitrary key; it means nothing other than to name the group
grid columnconfigure $master 0 -weight 1 -uniform fred
Run Code Online (Sandbox Code Playgroud)

在Tkinter中(请注意,文档字符串uniform似乎没有记录,但它正是您所需要的):

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

然后重复您要为其设置的其他列索引.(如您所见,代码在这两种情况下非常相似.)