网格布局

Tkinter中有多种组件布局方式,其中网格布局是目前最为推荐的组件布局方式。要将组件加入到网格布局,需要在组件上调用.grid()方法。.grid()方法接受以下参数来定义网格布局。

参数名功能
column所在网格列数,从0开始计数
columnspan同时占据列数
in_指定组件的父组件
ipadx内部左侧和右侧的留白
ipady内部上部和下部的留白
padx外部左侧和右侧的留白
pady外部上部和下部的留白
row所在网格行数,从0开始计数
rowspan同时占据行数
sticky指示组件在网格中的对齐位置

参数sticky可以影响组件的大小,其取值可参考以下方式。

  • 不给定sticky的值,组件以原始大小在所在网格中居中放置。
  • 赋值sticky=tk.NE等单一固定值,组件将放置在所在网格的相应锚点位置。
  • 赋值sticky=tk.N+tk.S将会使组件垂直方向拉伸贴近锚点并居中放置。
  • 赋值sticky=tk.E+tk.W将会使组件水平方向拉伸贴近锚点并居中放置。
  • 赋值sticky=tk.N+tk.E+tk.S+tk.W将会使组件在四个方向上拉伸以填满网格。
  • 赋值sticky=tk.N+tk.W将会使组件在相应方向上拉伸。

Tip

注意,网络布局的使用是在组件上调用.grid()方法,而不是在容器上调用。

在容器组件上调用.columnconfigure().rowconfigure()可以对指定行列进行配置。这两个方法接受的第一个参数是行列的索引,用来指定其后的配置应用在哪里。行列的配置主要由以下三项内容构成。

  • minsize,最小大小,以像素值描述。
  • pad,周围的留白大小。
  • weight,定义行列在缩放时的缩放比例权重。