本篇笔记: 记录使用tikinter库创建Label和设置Label属性的方法。
1、创建Label标签的方法
1.1 简介
在tkinter库中,label()函数用于创建一个标签控件,可以在窗口中显示一段文本或图像。
它的语法如下:
label = tk.Label(parent, options...)
参数说明
- parent:表示该标签控件的父容器,例如
tk.Tk()
的返回值就是常见的父容器; - options:可选参数,用于设置标签控件的属性,比如文本内容、字体、颜色、图片等等。
1.2 options常用选项
- text:用来设置需要显示的文本内容。
- font:标签的字体。
- fg:标签的前景色(即文本颜色)。
- bg:标签的背景色。
- width:标签的宽度。
- height:标签的高度。
- image:标签的图片。
- compound:指定文本和图像的排列方式,可选值包括 TOP、BOTTOM、LEFT和 RIGHT等。
2、Options常用选项样例
2.1 设置label的文本内容
import tkinter as tk
win = tk.Tk()
win.geometry("200x50")
tk.Label(win, text='这是个Label').pack()
win.mainloop()
运行效果:
2.2设置Labe标签的字体属性
1、字体font参数
font参数可以接受一个字典或一个字符串作为输入,用于设置字体的名称、大小和风格等属性。font属性的可选值取决于计算机上已安装的字体。
font=('family', size, 'weight', 'slant', 'underline', 'overstrike')
以下是一些常用的字体属性:
- family:字体的名称,例如:Arial、Calibri、Comic Sans MS、Consolas、Courier New、Georgia、Helvetica、Impact、Times New Roman、Verdana, 宋体,楷体等。
- size:字体的大小,以像素为单位。
- weight:字体的粗细,可选值包括 normal、bold。
- slant:字体的倾斜程度,可选值包括 normal、italic。
- underline:是否添加下划线,如果未赋值则表明无下划线。
- overstrike:是否添加删除线,如果未赋值则表明无删除线。
2、样例
import tkinter as tk
win = tk.Tk()
win.geometry("500x100")
tk.Label(win, text='宋体-14-正常-非斜体-无下划线-无删除线', font=('宋体', 14)).pack()
tk.Label(win, text='宋体-14-正常-非斜体-无下划线-无删除线', font=('宋体', 14, 'normal', 'normal')).pack()
tk.Label(win, text='楷体-16-粗体-斜体-下划线-删除线', font=('楷体', 16, 'bold', 'italic', 'underline', 'overstrike')).pack()
win.mainloop()
运行效果:
2.3设置Labe标签的文本颜色和背景颜色
在tk库中,fg和bg参数分别用于设置标签的前景色和背景色。
可以使用颜色名称或十六进制值来指定颜色。例如,fg='red'将文本或图片颜色设置为红色,fg='#FF0000'也可以达到同样的效果。
关于颜色可以参考 tkinter库笔记 - 设置窗口背景颜色
样例:
import tkinter as tk
win = tk.Tk()
win.geometry("250x50")
tk.Label(win, text='标签的颜色', font=('宋体', 14), fg='blue', bg='green').pack()
win.mainloop()
运行效果:
2.4设置Labe标签的宽度和高度
有2中方法可以设置标签的宽度和高度。
1、直接使用整数值来设置宽度和高度,例如:
import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
tk.Label(win, text='标签的颜色', fg='blue', bg='green', width=20, height=5).pack()
win.mainloop()
运行效果:
2、使用 place() 方法来设置标签的大小和位置:
采用与方法1相同的宽度和高度:
import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
label = tk.Label(win, text='标签的颜色', fg='blue', bg='green')
label.place(width=20, height=5)
win.mainloop()
调整宽度和高度后:
import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
label = tk.Label(win, text='标签的颜色', fg='blue', bg='green')
# label.place(width=20, height=5)
label.place(width=200, height=50)
win.mainloop()
对比geometry设置的尺寸,采用place方法设置的宽度和高度更加符合预期。
关于2种方法的差异,从网上找到的说法:
在 Tkinter 中,width 和 height 参数的单位是以字符(char)为基础的,而不是像素(pixel)。
这意味着它们的大小会随着字体和屏幕分辨率的变化而变化。因此,使用 width 和 height 参数设置标签的大小时,通常不会获得预期的效果。
相反,使用 place() 方法可以直接设置标签的像素大小和位置,因此可以获得更准确的控制。
2.5设置Labe标签的图标
- 在Tkinter中,
image
参数用于向标签中添加图片。可以使用PhotoImage
类来创建一个图片对象,并将其作为image
参数传递给 Label 方法。 - 在Tkinter中,一个 Label 中只能设置一张图片。如果需要在一个 Label 中显示多张图片,可以使用多个 Label 或其他部件来实现。
- 在 Label 中设置了图片后,默认情况下会隐藏文本,并显示图片。如果需要同时显示文本和图片,可以使用
compound
参数来指定文本和图片的相对位置。
compound
参数接受一个整数值或字符串值,表示图片相对文本的位置。以下是一些常用的字符串值:- "top":图片在文本上方。
- "bottom":图片在文本下方。
- "left":图片在文本左侧。
- "right":图片在文本右侧。
- "center":图片在文本中心。
样例1:1张图片
import tkinter as tk
win = tk.Tk()
win.geometry("300x150")
image = tk.PhotoImage(file="tk.png")
tk.Label(win, text='标签的颜色', fg='blue', bg='green', image=image, compound='bottom').pack()
win.mainloop()
运行效果:
样例2:2张图片
import tkinter as tk
win = tk.Tk()
win.geometry("300x150")
image1 = tk.PhotoImage(file="tk.png")
label1 = tk.Label(win, text='标签的颜色1', fg='blue', bg='green', image=image1, compound='bottom')
label1.pack(side='left')
image2 = tk.PhotoImage(file="tk.png")
label2 = tk.Label(win, text='标签的颜色2', fg='blue', bg='gray', image=image2, compound='top')
label2.pack(side='right')
win.mainloop()
运行 效果:
【相关链接】
GUI库 - tkinter笔记(汇总)