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

tkdocs网站的状态如下:



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

但是我希望列的宽度相等,最好使所有列的宽度取决于任何列中最宽的窗口小部件。有没有一种方法可以干净利落地做到这一点(即不要反复尝试使用单元格填充,除非我通过反复试验使它们完全相同,或者通过为每列任意分配一个明显合适的最小宽度)?此外,是否可以选择性地为网格中的某些列(但不是所有列)完成操作(例如,使X和Y列的大小根据X或Y列中最宽的窗口小部件来确定,而Z列的大小根据其中X列中最宽的窗口小工具进行调整Z栏)?

最佳答案

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

在标准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")

然后,对要为其设置内容的其他列索引重复上述步骤。 (如您所见,在这两种情况下,代码非常相似。)

关于python - 如何使用Tkinter在Python 2.7中创建等宽列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21002617/

10-11 06:19
查看更多