课程首页 › 第12章 › 第62课

第62课 布局管理方式

第12章 玩转GUI编程· 知识点:GUI 界面 · 原书 12.7
插图

是啊,create_polygon()函数设定了7个参数,分别为三角形的3个点的坐标:(130,250)、(145,130)和(250,250)。最后一个为填充的颜色,我们设置了red红色。

除此之外,使用Canvas还可以画出更加复杂的图形呢,例如圆弧、椭圆。是不是很期待?有兴趣可以自己尝试着画一画。

在前面的学习中,组件用的都是pack布局管理方式。在tkinter中,有3个组件布局管理方式,分别为pack、grid和place,我们一起来看看它们有什么不同。

小贴士

这3种布局方式不能同时存在于一个容器中。

布局管理方式1. pack

pack是我们目前用得最多的。

pack是指定相对位置的布局方式,在不要求精确布局的场景下可以使用。

pack布局管理方式默认按照放置的先后顺序从上到下排列,pack会为组件指定合适的位置和大小。

pack有几个比较重要的参数用来设置布局位置和大小,分别是side、fill和padding。

)1 side

用于指定组件依次靠窗口排放的位置,可以选择的值如下。

·left:靠窗口的左边排放。

·right:靠窗口的右边排放。

·top:靠窗口的顶部排放。

·bottom:靠窗口的底部排放。

插图

程序运行结果如下:

插图
插图

在程序中创建了Label组件的3个对象:label_1、label_2和label_3,通过side=""属性设置了组件排放在窗口的顶部。

top

通过程序运行结果可以看到,3个组件排放在窗口的顶部,按照排放的先后顺序,从上往下放置。

)2 fill

用于指定组件填充方式,可以选择的填充方式如下。

·X:组件在水平方向进行填充。

·Y:组件在垂直方向进行填充。

·BOTH:组件在水平和垂直方向都填充。

·NONE:不填充。

插图

程序运行结果如下:

插图

在程序中,通过fill参数设置组件的填充方式都为X水平填充,通过程序运行结果可以看到3个Label组件都往水平方向填充,组件的长度都和主窗口一样长。

)3 padding

用于指定组件边距,主要有内边距、外边距、水平边距和垂直边距。

·padx:水平方向的外边距。

·pady:竖直方向的外边距。

·ipadx:水平方向的内边距。

·ipady:竖直方向的内边距。

插图

程序运行结果如下:

插图

通过调节padding参数实现了组件不同的边距效果。

·padx=10:水平方向外边距为10。

插图

·pady=10:竖直外边距为10。

插图

·ipady=10:竖直方向内边距为10。

插图

布局管理方式2. grid

grid是格子的意思,按照行和列的方式来排列组件,所以又称为网格布局。组件的位置是由组件的行号和列号指定的。

grid布局管理方式的使用方法和pack布局管理方式是一样的,组件对象.grid()即可使用grid布局管理方式。

grid把界面划分为几行几列的网格。例如登录界面,很适合使用grid布局管理方式。我们可以把登录界面划分为一个2行2列的网格,然后将组件放置在相应的表格中。

插图
插图

我们先来了解grid布局管理方式的参数,通过参数的设置来放。

·row:行号,最小为0。

·column:列号,最小为0。

·rowspan:行跨度,决定组件占的行数。

·columnspan:列跨度,决定组件占的列数。

·padx:水平方向的外边距。

·pady:竖直方向的外边距。

·ipadx:水平方向的内边距。

·ipady:竖直方向的内边距。

·sticky:当格子的大小大于组件的大小的时候,指定组件的位置,默认是居中。还可以设置以下值。

◇N:North,北,靠父容器的上方。

◇S:South,南,靠父容器的下方。

◇W:West,西方,靠父容器的左边。

◇E:East,东方,靠父容器的右边。

◇NW:西北,靠父容器的左上方。

◇NE:东北,靠父容器的右上方。

◇SW:西南,靠父容器的左下方。

◇SE:东南,靠父容器的右下方。

学习了grid的参数,我想用row参数和colunmn参数来布局登录界面。

插图

程序运行结果如下:

插图
插图

通过grid布局管理方式指定行号row和列号column,布局好了一个登录界面。

程序通过设置row参数和column参数来布局,因为row参数和column参数的最小值都为0,所以在程序中也从0开始设置。

插图

布局管理方式3. place

place布局管理方式可以显式地指定组件的绝对位置或者相对于其他组件的位置。

使用方法和pack是一样的,组件对象即可使用布局。比较

.place()place

重要的属性如下。

、·x y:指定组件放置的绝对位置的x坐标和y坐标。

·width:组件的宽度。

·height:组件的高度。

、·relx rely:组件相对于父容器的x、y坐标,值为0~1的浮点数。

、·relwidth relheight:组件相对于父容器的宽度和高度,例如relwidth=0.5、relheight=0.5组件占据窗口的四分之一大小。

插图

程序运行结果如下:

插图

通过place布局管理方式的参数布局3个Label组件对象。大家可以通过不同的参数对比它们布局位置的不同。

我们学习了pack、grid、place 3种布局管理方式,讲解了比较重要的参数,大家要是有兴趣,可以继续学习更多的参数。通过不断地学习,使用这3种布局管理方式布局出更加漂亮的界面。

(1)GUI是Graphical User Interface的简称,也可以称为图形用户界面,是指计算机和用户交互的图形界面。

(2)tkinter模块是Python的标准图形库,使用tkinter模块能进行图形界面设计和交互操作编程。

(3)根窗口的创建:

插图

(4)Label组件:可以在根窗口中展示文字或者图片。

(5)Button组件:按钮组件。

(6)Entry组件:用来接收字符串输入。

(7)Canvas组件:称为画布组件,是的核心组件之一,可以用

tkinter Canvas类来绘制图形元素,例如线条、圆形、正方形等。

(8)三种不同的布局管理方式的学习:pack、grid和place。

(9)pack布局管理方式用于指定相对位置的布局方式,如果不要求精确布局,可以使用。

(10)grid布局管理方式用于按照行和列的方式来排列组件。组件的位置是由组件的行号和列号指定的。

(11)place布局管理方式可以显式地指定组件的绝对位置或者相对于其他组件的位置。

小挑战

(1)在登录窗口中,增加验证码文字和输入框,并且在输入框后面展示自动生成的验证码,并且添加“提交”按钮。效果图如下。

插图

(2)使用grid布局管理方式布局一个计算器。效果图如下。

插图

第13章 文件的读写

插图

在前面的章节中,我们介绍过程序是由输入、处理、输出组成的。输入通常是指用户的输入,例如键盘的按键;输出通常是通过屏幕展示的。还有另一种输入输出的途径,猜猜是什么?那就是文件。

通过文件可以将我们要输入的内容传入计算机中,同时也可以将内容以文件的形式输出。使用文件的一个好处是程序结束甚至计算机断电之后,文件中的内容不会丢失,可以永久保存。