当Widget跨越多列时,如何使Tkinter列等宽? [英] How to make Tkinter columns of equal width when widgets span multiple columns?

查看:35
本文介绍了当Widget跨越多列时,如何使Tkinter列等宽?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的内容中,标签为"一"、"二"和"三"的按钮没有均匀间隔。在我看来,问题的根源在于Tk假设包含跨多列的小部件部分的任何列都有默认的最小宽度。但是,这种行为似乎没有文档记录,所以我不确定如何适应或调整它,以便使列具有相等的宽度-包括文本小部件跨越的两列和文本小部件没有跨越的单个列-从而均匀地分隔按钮。我可以通过反复试验来拼凑它,即填充后一列,直到它与前两列匹配,但这似乎是一个糟糕的解决方案。

编辑:在下面使用@jwill is0720进行讨论之后,我添加了额外的列(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_columnconfigureuniform配合使用不能解决此问题。插入以下行(请参阅此处类似问题的答案:How to create equal-width grid columns 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

推荐答案

我认为您可能需要使用粘滞选项。

Sticky=定义在生成的单元格为 比小工具本身大。这可以是 常量S、N、E和W,或NW、NE、SW和SE。

例如,W(WEST)表示小部件应与 单元格左边框。W+E表示微件应该拉伸 水平填充整个单元格。W+E+N+S表示微件 应该向两个方向扩展。默认情况下将微件居中 在单元格中。

import Tkinter

master = Tkinter.Tk()

Tkinter.Button(master, text='ONE').grid(row=0, column=0, sticky='NW')
Tkinter.Button(master, text='TWO').grid(row=0, column=1, sticky='NW')
Tkinter.Button(master, text='THR').grid(row=0, column=2, sticky='NW')
Tkinter.Button(master, text='FOU').grid(row=1, column=2)
Tkinter.Text(master).grid(row=1, column=0, columnspan=2)


master.mainloop()

编辑

它看起来是什么样子。除了文本小部件按指定占据两列之外,我的小部件看起来像这样均匀分布。

这篇关于当Widget跨越多列时,如何使Tkinter列等宽?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆