grid()网格布局,在网格中使用row定义组件所在的行,使用column定义组件所在的列。
其常用参数如下:
参数 | 含义 |
row | 组件所在的行 |
column | 组件所在的列 |
rowspan | 组件横向合并的行数 |
columnspan | 组件纵向合并的列数 |
sticky | 组件填充所分配空间空白区域的方式 |
padx、pady | 组件距离窗口边界的水平方向以及垂直方向的距离 |
grid()方法中参数设置
row、column:定义组件所在的行数、列数。这是grid()网格布局方法中比较重要的两个参数,如果省略,则使用默认值“row=0,column=0”,而单元格的大小取决于最大组件的宽度。
使用gird()方法显示4以内的乘法表:
from tkinter import *
win=Tk()
#标题
win.title('4x4乘法表?')
for i in range(1,5):
for j in range(1,5):
if i>=j:
Label(win,text='{}*{}={}'.format(i,j,i*j)).grid(row=i-1,column=j-1,padx=10)
win.mainloop()
rowspan和columnspan:组件纵向合并的函数和横向合并的列数,例如上图的例子,设置第一行合并4列,第二行的两个组件分别合并2列:
from tkinter import *
win=Tk()
#标题
win.title('4x4乘法表?')
cl=[0,2]
for i in range(1,5):
for j in range(1,5):
if i>=j:
if i==1:
Label(win,text='{}*{}={}'.format(i,j,i*j),relief='groove').grid(row=i-1,column=j-1,padx=10,columnspan=4)
elif i==2:
Label(win,text='{}*{}={}'.format(i,j,i*j),relief='groove').grid(row=i-1,column=cl[j-1],padx=10,columnspan=2)
elif i==4:
Label(win,text='{}*{}={}'.format(i,j,i*j),relief='groove').grid(row=i-1,column=j-1,padx=10)
win.mainloop()
sticky:其功能与snchor相似,只不过它有4个可选参数值:N(上对齐)、S(下对齐)、W(左对齐)、E(右对齐)。默认情况下,如果组件的宽度不一致,宽度较小的组件会以宽度较大的组件为基准,将同列的其他组件居中对齐。
sticky还可以组合使用:
sticky=N+S:拉长组件高度,使组件的顶端和底端对齐
sticky=N+S+E:拉长组件高度,使组件的顶端和底端对齐,同时切齐右边
sticky=N+S+W:拉长组件高度,使组件的顶端和底端对齐,同时切齐左边
sticky=W+E:拉长组件宽度,使组件的左边和右边对齐
sticky=N+S+N+S:拉长组件高度和宽度,使组件的上下左右都对齐
rowconfigure()和columnconfigure()方法设置组件的缩放比例
tkinter模块添加的窗口默认情况下都是可以通过拖动鼠标改变大小的,而当窗口大小改变时,可以通过rowconfigure()和columnconfigure()改变某行或某列组件所占空间随窗口缩放的比例。
语法如下:
win.rowconfigure(0,weight=1)
win.columnconfigure(1,weight=1)