Grid按行列来摆放组件,索引是从0开始计数。但是计数可以跳过而不按顺序,如1,2,8,10,这样方便后期中中间添加。行列交叉可视为一个单元格,一个单元格只能装一个组件。如果想在单元格中放多个组件,就可以使用Frame或者 LabelFrame组件。
单元格
单元格的行高列宽是由其包含的组件来确实的,列宽取决于组件的宽度,行高取决于组件的高度。同时,单元格可以跨多行或者跨多列,如下图。
grid配置
container.columnconfigure(index, weight)
container.rowconfigure(index, weight)
如columnconfigure可以设定具体的某index列所占用的宽度。如默认情况下,其他列weight为1, index列为2的话,那index列的宽度就相当于两倍大。
grid设置位置
widget.grid(**options)
grid可以使用的参数列表如下:
- column:
- row
- rowspan
- columnspan
- sticky
- padx
- pady
- ipadx
- ipady
主要介绍下sticky。默认情况下,如果单元格比组件大,grid方法会将组件放在单元格的center位置,如下图:
sticky可以取如下值 :
- N
- S
- E
- W
- NW
- NE
- SE
- SW
- NS
- EW
其中,NS位置如下:
EW位置:
代码示例
生成一个如下登录框:
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry("240x100")
root.title('Login')
root.resizable(0, 0)
# configure the grid
root.columnconfigure(0,