很多时候 Tkinter 界面编程都会优先考虑使用 Pack 布局,但实际上 Tkinter 后来引入的 Grid 布局不仅简单易用,而且管理组件也非常方便。
Grid 把组件空间分解成一个网格进行维护,即按照行、列的方式排列组件,组件位置由其所在的行号和列号决定,行号相同而列号不同的几个组件会被依次上下排列,列号相同而行号不同的几个组件会被依次左右排列。
使用 Grid 布局的过程就是为各个组件指定行号和列号的过程,不需要为每个网格都指定大小,Grid 布局会自动为它们设置合适的大小。
程序调用组件的 grid() 方法就进行 Grid 布局,在调用 grid() 方法时可传入多个选项,该方法支持的 ipadx、ipady、padx、pady 与 pack() 方法的这些选项相同。而 grid() 方法额外增加了如下选项:
column:指定将组件放入哪列。第一列的索引为 0。
columnspan:指定组件横跨多少列。
row:指定组件放入哪行。第一行的索引为 0
rowspan:指定组件横跨多少行。
sticky:有点类似于 pack() 方法的 anchor 选项,同样支持 N(北,代表上)、E(东,代表右)、S(南,代表下)、W(西,代表左)、NW(西北,代表左上)、NE(东北,代表右上)、SW(西南,代表左下)、SE(东南,代表右下)、CENTER(中,默认值)这些值。
下面程序使用 Grid 布局来实现一个计算器界面:
# Python 2.x使用这行 #from Tkinter import * # Python 3.x使用这行 from tkinter import * class App: def __init__(self, master): self.master