在下面的例子中,标有“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()
请注意,将grid_columnconfigure
与uniform
一起使用并不能解决此问题。插入以下行(请参见此处类似问题的答案: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
我想你应该用粘性选项。
编辑
它看起来像什么。我的看起来是等距的,只是文本小部件按指定的方式占据了两列。
我知道以前的帖子,但我也很难让列和行保持相同的宽度/高度,所以我想我会分享我的解决方案
对python和tkinter来说是新的,所以如果有任何错误,请告诉我
我创建了一个网格管理器,这使得主窗口和任何框架都可以设置成等距的列和行,这并不是100%,但是对于我所使用的它来说,它工作得很好,在构建阶段特别有用
创建框架时的一个缺点是框架的最大行/列数必须等于或小于它所跨越的行/列数,否则会有点奇怪(不知道为什么)
希望这有帮助
enter image description here
相关问题 更多 >
编程相关推荐