Tkinter Grid常用选项:
column 指定将组件放入哪列,第一列的索引为 0。
columnspan 指定组件横跨多少列。
row 指定组件放入哪行,第一行的索引为 0。
rowspan 指定组件横跨多少行。
sticky 对齐方式,类似 pack() 方法的 anchor 选项,同样支持 N、E、S、W、NW、NE、SW、SE、CENTER。
两控件不一样大小时,可拉伸:
sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐
sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐
sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)
ipadx 指定组件在 x 方向(水平)上的内部留白。按钮的边框与文字距离
ipady 指定组件在 y 方向(水平)上的内部留白。
padx 指定组件在 x 方向(水平)上与其他组件的间距。两个按钮之间距离
pady 指定组件在 y 方向(水平)上与其他组件的间距。
注意:同级别之内不能混用pack和grid布局
from tkinter import *
root = Tk()
root.title('Grid布局')
root.resizable(0,0)
#relief 3D(FLAT,RAISED,SUNKEN,GROOVE,RIDGE)
Entry(relief=SUNKEN, font=('Courier New', 24), width=24).pack(side=TOP, pady=5)
p = Frame(root)
p.pack(side=TOP)
names = ("0", "1", "2", "3","4", "5", "6", "7", "8", "9","+", "-", "*", "/", ".", "=","Cls", "Bck", "close")
for i in range(len(names)):
b = Button(p, text=names[i], font=('Verdana', 20), width=6)
if names[i] == 'close':
b.grid(row=i // 4, column=i % 4, columnspan=2,ipadx=56)
b.grid(row=i // 4, column=i % 4)
root.mainloop()