转自:http://xmsay.com/python-gui-tkinter-grid%E7%BD%91%E6%A0%BC%E5%87%A0%E4%BD%95%E5%B8%83%E5%B1%80%E7%AE%A1%E7%90%86%E5%99%A8%E4%BD%BF%E7%94%A8/
Tkinter参考中最推荐使用的一个布局器。实现机制是将Widget逻辑上分割成表格,在指定的位置放置想要的Widget就可以了。
使用grid显示窗体的主要流程:
self.thing = constructor(parent,……)#constructor可以为Button,Frame等
self.thing.grid(……)
grid方法介绍:
w.grid(option=value,……)
向窗体注册并显示控件
主要参数:
column: 控件放置位置的列数,从0开始算起,默认为0;
clomnspan: 设置单元格横向跨越的列数,例如:w.grid(row=0, column = 2, columnspan=3);
in_:重新设置w为窗体w2的子窗体,方法:in_=w2.w2必须是w的父窗体子类;
ipadx:设置控件里面x方向空白区域大小;
ipady:设置控件里面y方向空白区域大小;
padx:设置控件周围x方向空白区域保留大小;
pady:设置控件周围y方向空白区域保留大小;
row:控制放置的行数,从0开始算起,默认为上一个位占领的行数
rowspan:设置单元格纵向跨越的列数,例如:w.grid(row=0, column = 2,rowspan=4, columnspan=5);
sticky:设置对齐方式
如果未设置对齐方式,默认为将控件放置在窗体中间。对齐方式主要有如下几种:
1) 通过使用sticky=NE(右上角),SE(右下角),SW(左下角),NW(左上角)来设置控件位置
2) 通过使用sticky=N(上中),E(右中),S(底中),W(左中)来设置控件放置中间位置
3) sticky=N+S,向垂直方向拉升而保持水平中间对齐
4) sticky=E+W,向水平方向拉升而保持垂直中间对齐
5) sticky=N+E+S+W,以水平方向和垂直方向拉升的方式填充单元格
这部分内容一直没弄懂,界面的布局要靠不停的尝试,略有点拙急。原因就在于pack(), grid(), place(),三个方法一个都没用好,widget中与尺寸有关的height和width选项的度量单位没弄明白。希望今天能一劳永逸的解决这个问题~~~
***************************************************************************************************
Widget尺寸:
- Dimensions:如果设定为int,那么表示的是像素值,也可以使用单位c=Centimeters, i=Inches, m=Millimeters, p=Printer’s points(about 1/72”);
- Characters:许多与character相关的widget 是以Font size来度量自身尺寸的。Font可以使用tkFont.Font(size)来创建,size表示的是字符的高度,int表示point,-int表 示的像素值,例如-20表示20个像素大小,20则表示20-point,这里指的是单个character的大小,反应在widget中指的是以单个 character大小为单位;
下面将widget一句的标准列举出来:
Widget | Height | Width |
Button | text行数 | Characters标准 |
Canvas | Dimensions标准 | Dimensions标准 |
CheckButton | text行数 | Characters标准 |
Entry | 单行 | Characters标准 |
Frame | Dimensions标准 | Dimensions标准 |
LabelFrame | Dimensisons标准 | Dimensions标准 |
Label | text行数 | Characters标准 |
ListBox | text行数 | Characters标准 |
Menu | 无 | 无 |
MenuButton | text行数 | Characters标准 |
Message | 无 | Dimensions标准 |
OptionMenu | Dimensions标准 | Dimensions标准 |
PanedWindow | 子widget | 子widget |
Radiobutton | text行 | Characters标准 |
Scale | 无 | Dimensions标准 |
Scrollbar | 无 | Dimensions标准 |
Spinbox | 无 | Characters标准 |
Text | text行 | Characters标准 |