第2-2讲,深入了解label-标签属性2
标签属性讲解:
准备工作,准备一个空窗口,进行测试:
import tkinter as tk #创建窗体 window=tk.Tk() #设置窗体标题 window.title("标签属性") window.iconbitmap('images/米饭.ico') #设置窗体大小 window.geometry("300x200") #显示窗体 window.mainloop()
属性:image
image : 标签显示的图片,image值应该是由PhotoImage()创建的图像对象。
下面的代码,可以在标签里显示一个图片,但一定要先在代码文件的目录里,先准备好图片文件bicycle.png
import tkinter as tk from PIL import Image, ImageTk from PIL.Image import LANCZOS #创建窗体 window=tk.Tk() #设置窗体标题 window.title("标签属性") window.iconbitmap('images/米饭.ico') #设置窗体大小 window.geometry("500x400") #image值应该是由PhotoImage()创建的图像对象 img1= tk.PhotoImage(file='images/bicycle.png') #创建标签 la1=tk.Label(window,text='自行车',image=img1,bg='lightblue') #标签固定窗口上 la1.pack() #显示窗体 window.mainloop()
先要在代码中先要把图片文件bicycle.png通过PhotoImage()方法转为对象img1,然后才可以在定义标签里使用这个图像对象。目前用PhotoImage()方法支持gif 和 png 两种格式。
运行结果如下:
根据运行结果可知,没有定义标签的宽和高,标签显示图像,它的尺寸也是可以自适应图片大小的。但是,由于显示了图像,而文本“魂斗罗”却无法显示,这说明图像相对于文本,有更高的显示优先权。如果想文本和图像同时显示,就要用到下面的参数:compound
属性:compound
compound : 控件标签图像和文本混合显示。compound的选项:center,left,right,top,bottom 分别决定文本显示在图像的正中间,左边,右边,上面,下面。
#image值应该是由PhotoImage()创建的图像对象 img1= tk.PhotoImage(file='images/bicycle.png') #创建标签 la1=tk.Label(window,text='自行车',image=img1,bg='lightblue',compound='left')
运行结果:
属性:width,height
width,height : 文本标签的宽和高
如果标签显示的是字符,那么宽和高的单位: 字符单位,如果标签显示的有图像,那么宽和高的的单位是:像素
在不设置标签宽高的情况下,默认状态下,标签大小总跟文字大小工图像大小相适应。如果想设置标签的大小,大家可以设置width和height,纯文本的标签,width和height的单位都是半角字符单位。
label=tk.Label(window,text="123456",width=5,height=1,background='lightblue')
运行结果:
其实,你在代码把text=’12345’,去除,运行结果,标签的宽和高也一样,这说明,width和height这2个参数决定标签大小,跟text的文字多少没有关系了。
width=5,height=1 说明标签大小可以显示1行5个半角字符
width=6,height=3 说明标签大小可以显示3行6个半角字符
属性:padx, pady
padx : 决定 Label 水平方向上的额外间距(内容和边框之间的距离)
pady : 决定 Label 垂直方向上的额外间距(内容和边框之间的距离)
padx,pady这2个参数,从某种角度来说,是另一种决定标签大小的方法,但它的单位是像素。
label2=tk.Label(window,text='12345',bg='lightblue',padx=10,pady=20)
运行结果如下:
标签在水平方面的左右2边都增加了10个像素,在垂直方面的上下2边都增加了20个像素。
属性:anchor
anchor: 如果标签高、宽大于显示的文本或图像尺寸,anchor属性决定标签文本和图像的显示位置。
la1=tk.Label(window,text='12345',bg='lightblue',width=20,height=5,anchor='se')
运行结果如下:(上面代码中的width和 height的单位是字符单位)
anchor=’se’ 这个代码让标签文本显示在这个标签的右下角
anchor的选项有:"n", "ne", "e", "se", "s", "sw", "w", "nw", 和 "center" 代表的方位如下图所示。(默认是居中显示‘center' )
如果把标签文本改成图像,也是一样的。 镕亓焗
img1=PhotoImage(file='0.png')
la1=tk.Label(window,image=img1,bg='lightblue',width=200,height=90,anchor='se')
运行结果:(上面代码中的width和 height的单位是像素)