11、布局layout

对于任何⼀⻔图形界⾯编程来说,布局都是⾮常重要的⼀关,它的英⽂翻译叫做“layout”。不管是MFC、Java、还是Qt等图形界⾯编程, 都会有有布局的相关知识。 Python 的 Tkinter 也⼀样。

注意: pack 和 grid 不能同时⽤。⽽且通常对于较为复杂点的界⾯, 还是建议⼤家⽤gird;如果布局相对简单,使⽤pack 也很不错。

pack 布局

我们使⽤ pack 函数的时候,默认先使⽤的放到上⾯,然后依次向下排,它会给我们的组件⼀个⾃认为合适的位置和⼤⼩,这是默认⽅式,也是我们上⾯⼀直采⽤的⽅式。

选项 含义
anchor 1. 控制组件在 pack 分配的空间中的位置 ;2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或者 "center" 来定位(ewsn 代表东西南北,上北下南左西右东); 3. 默认值是 "center"
expand 1. 指定是否填充父组件的额外空间 2. 默认值是 False
fill 1. 指定填充 pack 分配的空间 ;2. 默认值是 NONE,表示保持子组件的原始尺寸 ;3. 还可以使用的值有:"x"(水平填充),"y"(垂直填充)和 "both"(水平和垂直填充)
in_ 1. 将该组件放到该选项指定的组件中 ;2. 指定的组件必须是该组件的父组件
ipadx 指定水平方向上的内边距
ipady 指定垂直方向上的内边距
padx 指定水平方向上的外边距
pady 指定垂直方向上的外边距
side 1. 指定组件的放置位置;2. 默认值是 "top" ;3. 还可以设置的值有:"left","bottom","right"

grid 布局

由于我们的程序⼤多数都是矩形,因此特别适合于⽹格布局,也就是 grid 布局。

选项 含义
column 1. 指定组件插入的列(0 表示第 1 列) ;2. 默认值是 0
columnspan 指定用多少列(跨列)显示该组件
in_ 1. 将该组件放到该选项指定的组件中 ;2. 指定的组件必须是该组件的父组件
ipadx 指定水平方向上的内边距
ipady 指定垂直方向上的内边距
padx 指定水平方向上的外边距
pady 指定垂直方向上的外边距
row 指定组件插入的行(0 表示第 1 行)
rowspan 指定用多少行(跨行)显示该组件
sticky 1. 控制组件在 grid 分配的空间中的位置; 2. 可以使用 "n", "e", "s", "w" 以及它们的组合来定位(ewsn代表东西南北,上北下南左西右东);3.使用加号(+)表示拉长填充,例如 "n" + "s" 表示将组件垂直拉长填充网格,"n" + "s" + "w" + "e" 表示填充整个网格;4.不指定该值则居中显示