3-3 grid方法
这是一种以格状或者类似Excel电子表格方式包装和定位窗口组件的方法。grid方法的语法格式如下。
options参数可以是row、column、padx/pady、rowspan、columnspan、sticky。下面将分小节一一说明。
3-3-1 row和column
row和column参数的概念可参考下图。
可以适度调整grid( )方法内的row和column值,即可包装窗口组件的位置。
程序实例ch3_24.py:使用grid( )方法取代pack( )方法重新设计ch3_2.py。
执行结果
程序实例ch3_25.py:重新设计ch3_24.py,体会格状包装的另一个应用。
执行结果
3-3-2 columnspan参数
可以设定控件在column方向的合并数量,在正式讲解columnspan参数功能前,下面先介绍建立一个含8个标签的应用。
程序实例ch3_26.py:使用grid方法建立含8个标签的应用。
执行结果
如果发生了标签2和标签3的区间是被一个标签占用的情况,此时就是使用columnspan参数的场合。
程序实例ch3_27.py:重新设计ch3_26.py,将标签2和标签3合并成一个标签。
执行结果
3-3-3 rowspan参数
可以设定控件在row方向的合并数量,程序实例ch3_26.py中,如果发生了标签2和标签6的区间被一个标签占用的情况,此时就是使用rowspan参数的场合。
程序实例ch3_28.py:重新设计ch3_26.py,将标签2和标签6合并成一个标签。
执行结果
请再看一次程序实例ch3_26.py,若是标签2、标签3、标签6、标签7合并成一个标签,此时需要同时设定rowspan和colspan,可参考下列实例。
程序实例ch3_29.py:重新设计ch3_26.py,将标签2、标签3、标签6和标签7合并成一个标签。
执行结果
3-3-4 padx和pady参数
这两个参数的用法与3-2-2节中pack方法的padx/pady参数相同,下面将直接以程序实例讲解。
程序实例ch3_30.py:重新设计ch3_26.py,增加标签间的间距。
执行结果
3-3-5 sticky参数
这个参数的功能类似anchor,但是只可以设定N/S/W/E,即上/下/左/右对齐。原则上相同column的Widget控件,如果宽度不同时,grid方法会保留最宽的控件当作基准,这时比较短的控件会居中对齐,可参考下列实例。
程序实例ch3_31.py:观察相同column中的Widget控件宽度不同时,控件内容会居中对齐。
执行结果
从上图可以看到“明志工专”标签是居中对齐。
程序实例ch3_32.py:重新设计ch3_31.py,设置“明志工专”标签靠左对齐。
执行结果
sticky参数的可能值N/S/W/E也可以组合使用。
sticky=N+S:可以拉长高度让控件在顶端和底端对齐。
sticky=W+E:可以拉长宽度让控件在左边和右边对齐。
sticky=N+S+E:可以拉长高度让控件在顶端和底端对齐,同时切齐右边。
sticky=N+S+W:可以拉长高度让控件在顶端和底端对齐,同时切齐左边。
sticky=N+S+W+E:可以拉长高度让控件在顶端和底端对齐,同时切齐左右边。
在讲解上述实例应用前,先修改ch3_31.py程序,并观察执行结果。
程序实例ch3_33.py:重新设计ch3_31.py,主要是使用relief="raised"参数增加标签的外观。
执行结果
上述程序的目的主要是了解标签的宽度。
程序实例ch3_34.py:使用sticky=W+E参数,重新设计ch3_33.py,这个程序主要是要观察“明志工专”标签被拉长后的结果。
执行结果
3-3-6 grid方法的应用
程序实例ch3_35.py:使用grid方法建立色彩标签的应用。
执行结果
3-3-7 rowconfigure( )和columnconfigure( )
在设计Widget控件的布局时,有时候会碰上窗口缩放大小,此时可以使用这两个方法设定第几个row或column的缩放比例。例如:
程序实例ch3_35_1.py:认识rowconfigure( )、columnf i gure( )与sticky参数的用法,此处不使用sticky参数。
执行结果 下列右图是放大窗口后的结果。
ch3_35_1.py中特别使用底色表达各个标签所占据的空间,读者可以看到在没有使用sticky参数的情况下,各个控件所占据的空间。
程序实例ch3_35_2.py:增加设计lab1的sticky=W,让其可以切齐左边。同时让下方的标签可以对齐上、下、左、右边。
执行结果
通过上述执行结果可以得知下方的标签控件可以随着窗口大小更改,主要是第18行设置“sticky=N+S+W+E”的结果。至于第11行设置“sticky=W”,会让lab1控件向左对齐。
程序实例ch3_35_3.py:修改实例ch3_35_2.py让lab1控件可以左右切齐,同时放大窗口时有扩展效果。
执行结果