在下面,标有“ONE”、“TWO”和“THR”的按钮没有均匀分布。在我看来,问题的根源在于 Tk 假设任何包含跨越多列的小部件的一部分的列的默认最小宽度。但是,这种行为似乎没有记录,所以我不确定如何适应或调整它以使列具有相等的宽度 - 包括文本小部件跨越的两列和文本未跨越的单列小部件 - 从而均匀地间隔开按钮。我可以通过反复试验来拼凑它,即填充后一列直到它与前两列匹配,但这似乎是一个糟糕的解决方案。
编辑:在下面与@jwillis0720 的讨论之后,我添加了一个额外的列 (3) 和按钮 ('FIV') 以使问题更清晰。这个问题是关于当其中一些列被多列小部件跨越而其他列不是时如何使列具有相同的宽度。
import Tkinter
master = Tkinter.Tk()
Tkinter.Button(master, text='ONE').grid(row=0, column=0)
Tkinter.Button(master, text='TWO').grid(row=0, column=1)
Tkinter.Button(master, text='THR').grid(row=0, column=2)
Tkinter.Button(master, text='FOU').grid(row=1, column=2)
Tkinter.Button(master, text='FIV').grid(row=0, column=3) # added as per above edit
Tkinter.Text(master).grid(row=1, column=0, columnspan=2)
master.mainloop()
Run Code Online (Sandbox Code Playgroud)
请注意,使用grid_columnconfigurewithuniform并不能解决这个问题。插入以下几行(请参阅此处对类似问题的回答:How to create equal-width columns in Python 2.7 with Tkinter)只会使列变得有弹性;它们的大小仍然不均匀:
master.grid_columnconfigure(0, weight=1, uniform='a')
master.grid_columnconfigure(1, weight=1, uniform='a')
master.grid_columnconfigure(2, weight=1, uniform='a')
master.grid_columnconfigure(3, weight=1, uniform='a') # added as per above edit
Run Code Online (Sandbox Code Playgroud)