Python GUI设计:tkinter菜鸟编程
上QQ阅读APP看书,第一时间看更新

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控件可以左右切齐,同时放大窗口时有扩展效果。

执行结果