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

第58课 Label组件

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

根窗口创建好了,接下来我们就可以在根窗口上添加内容了。

插图

要添加的第一个组件是Label。这是一个标签,用Label组件可以在根窗口中展示文字或者图片。

还记得我们学习的第一个Python程序是什么吗?

我们用Label组件来和Python说声Hello。Python是不是会很惊喜呢?

一起来动动手,使用Label组件进行创作。

插图
插图

依次单击菜单栏Run→Run Module选项来运行程序,运行结果如下:

插图

用一幅图来分析一下这个运行结果。

插图

在以上程序中,我们创建了一个窗口,并在窗口中输出了

!Hello Python,具体是怎么实现的呢?

我们一句一句来分析:

·import tkinter as tk:这句代码大家是不是很熟悉,在模块中刚刚学习过,意思是导入tkinter模块并且取新名字为tk。

·root=tk.Tk():调用Tk()函数创建根窗口。

我的·root.title("Label"):将窗口的名称(即标题)设置为“我的Label”。

插图

,!:创建

·label=tk.Label(root text="Hello Python",bg="pink")Label

组件,第一个参数是root根窗口,第二个参数是我们要显示的文字,第三个参数是组件的背景颜色。Label组件是Tk的15种核心组件之一。

插图

·label.pack():将创建好的Label组件添加到root根窗口中,根窗口才能将Label展示出来。

tkinter共有3种布局管理方式,分别是pack布局、grid布局和place布局。这句代码中的pack布局将向容器中添加组件,第一个添加的组件在最上方,然后依次向下添加。

·root.mainloop():让根窗口持续展示。如果组件有变化,它将会不断刷新。

展示图片1. Label

试试用Label组件来展示图片。

插图
插图

单击菜单栏Run→Run Module选项来运行程序,运行结果如下:

在程序中,通过import tkinter as tk导入tkinter模块,并且取了一个新名字tk,在下面的代码中就可以用tk表示tkinter模块。

插图

通过root=tk.Tk()创建根窗口。

通过root.geometry("240×240")将根窗口的大小设置为图片的大小。

果果拓展

以1.gif为例,因为Windows系统和macOS系统查看图片大小的方式不一样,所以分开讲解。

插图

系统Windows

右击图片,选择属性。

插图
插图

进入图片属性页面,选择详细信息,可以看到图片的尺寸,这就是我们要的图片大小。

插图

系统macOS

右击图片,选择显示简介。

插图
插图

进入图片简介,在更多信息下面可以看到尺寸,这就是图片大小。

插图

''设置了要展示的图片路径,注意图片的格式为.gif。这里

pic=1.gif

需要设置成图片和程序文件的相对地址。

photo=tk.PhotoImage(file=pic):关键来了,通过PhotoImage类创建了一个图片对象,参数是图片的地址。

PhotoImage类用来在组件中展示图片,图片格式支持.gif。因为程序中的图片格式是.gif,所以不用进行特殊处理。

插图

小拓展

如果想要展示PhotoImage不支持的图片格式,我们可以借助

()将图片处理为PIL Python Image Library PhotoImage能展示的图片,PIL是Python的第三方图像处理库。

第三方库需要先安装,下面分别介绍Windows系统和macOS系统下的安装方式。

系统Windows

打开命令提示符窗口。

插图
插图

在界面中输入pip3 install pillow,按Enter键,开始安装。

插图
插图

安装成功,提示Successfully installed pillow。

插图

系统macOS

单击终端以启动该程序。

插图

进入终端界面。

插图

在界面中输入pip3 install pillow,按Enter键,开始安装。

插图

安装成功。

插图

安装成功之后,我们就可以使用了。

例如有一幅.jpeg格式的图片要展示,我们一起通过PIL将.jpeg格式的图片处理成tkinter能兼容的格式。

插图

程序运行结果如下:

插图

在程序中,使用PIL展示了tkinter不能展示的.jpeg图片。

Image.open(path)创建Label组件,通过image=photo设置了要展示的图片。

label.pack()将创建好的Label组件展示在主窗口中。

root.mainloop()让主窗口持续展示。

插图

既展示图片,又展示文字2. Label

Label既可以展示图片,又可以展示文字,下面试用Label组件同时展示文字和图片吧。

插图

依次单击菜单栏Run→Run Module选项来运行程序,程序运行结果如下:

插图
插图

在程序中,我们用Label组件将文字和图片同时展示在根窗口中。str="大家好,欢迎一起来学编程!"是要展示的文字。

,黑

label=tk.Label(root,text=str,image=photo compound='top',font=('

体创建了组件。参数说明如下。

',20))Label

·text=str:设置Label组件要展示的文字,str是变量。

黑体:设置文字的字体是黑体,字体大小是·font=('',20)20。

·compound='top':指定图像和文本在Label上如何展示。我们使用的是top,图片展示在文字的顶部。

还有其他选项,我们一一尝试。

·compound='left':图像在文字的左边。

插图

·compound='right':图像在文字的右边。

插图

·bottom:图像在文字的下边。