Виджет Tkinter Label используется в Python для отображения текста или изображения на экране.
Знакомство с виджетом Tkinter Label
Для использования виджета Label используется следующий общий синтаксис:
label = ttk.Label(master, **options)
Виджет «Label» имеет множество параметров, позволяющих настраивать его внешний вид:
| Параметры | Значение |
|---|---|
| anchor | Если текст и/или изображение меньше ширины, опция привязки определяет, где их расположить: tk.W, tk.CENTER или tk.E для выравнивания по левому краю, по центру и по правому краю соответственно. |
| background | Установка цвет фона для метки |
| borderwidth | Используйте эту опцию, чтобы создать эффект для метки, например, плоскую, приподнятую, утопленную, с бороздкой или ребром. |
| class_ | Укажите имя класса пользовательского виджета для изменения внешнего вида метки. |
| compound | Укажите, как отображать текст и изображение на этикетке. |
| cursor | Внешний вид курсора мыши, когда он находится над виджетом. |
| font | Стиль шрифта для отображения текста. |
| foreground | Указать цвет текста. |
| image | Укажите изображение или изображения, которые будут отображаться в дополнение к тексту или вместо текста. |
| justify | Если текст содержит символы новой строки, параметр justify определяет, как каждая строка будет располагаться по горизонтали. Допустимые значения: tk.LEFT (выравнивание по левому краю), tk.CENTER (выравнивание по центру) и tk.RIGHT (выравнивание по правому краю). |
| padding | Добавить больше места вокруг этикетки. |
| relief | Разбить текст на строки, длина которых меньше, чем указано в параметре wraplength. |
| style | Укажите пользовательский стиль виджета. |
| takefocus | Логическое значение, указывающее, посещается ли метка во время перемещения фокуса. По умолчанию — False, что не приводит к фокусу. |
| text | Укажите строку текста для отображения в виджете. |
| textvariable | Экземпляр StringVar, который содержит текстовое значение виджета. Он переопределяет опцию text, если доступны и textvariable, и text. |
| underline | Укажите позицию буквы, которая должна быть подчеркнута, например, подчеркивание = 0 подчеркнет букву E в тексте = «Exit». |
| width | Укажите количество отображаемых символов. |
| wraplength | Разбить текст на строки, длина которых меньше, чем указано в параметре wraplength. |
Ниже показана структура программы, которую мы будем использовать для иллюстрации различных параметров виджета «Label»:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')
# show the label here
root.mainloop()
Отображение обычной метки
Следующая программа показывает, как отобразить обычную метку в корневом окне:
import tkinter as tk
from tkinter.ttk import Label
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')
# show a label
label = Label(root, text="This is a label")
label.pack(ipadx=10, ipady=10)
root.mainloop()
Выход:

Как это работает.
- Сначала импортируйте класс Label из модуля tkinter.ttk.
- Во-вторых, создайте корневое окно и задайте его свойства, включая размер, возможность изменения размера и заголовок.
- В-третьих, создайте новый экземпляр виджета Label, установите его контейнер в корневое окно и назначьте его свойству text текстовую строку.
Установка определенного шрифта для метки
Чтобы задать определенный шрифт для метки, необходимо передать аргумент ключевого слова font конструктору метки следующим образом:
font =('font name', font_size)
Аргумент ключевого слова font — это кортеж, содержащий имя и размер шрифта. Например:
font=("Helvetica", 14)
В следующем примере показана метка со шрифтом Helvetica:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Demo')
# label with a specific font
label = ttk.Label(
root,
text="A Label with the Helvetica font",
font=("Helvetica", 14))
label.pack(ipadx=10, ipady=10)
root.mainloop()
Выход:

Отображение изображения
Чтобы использовать виджет Label для отображения изображения, выполните следующие действия:
Сначала создайте виджет PhotoImage, передав путь к фотографии в конструктор PhotoImage:
photo = tk.PhotoImage(file="./assets/python.png")
Во-вторых, назначьте объект PhotoImage параметру изображения виджета Label:
Label(..., image=photo)
В следующем примере показано, как использовать виджет Label для отображения изображения:
import tkinter as tk
from tkinter import ttk
# create the root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Image')
# display an image label
photo = tk.PhotoImage(file="./assets/python.png")
image_label = ttk.Label(
root,
image=photo,
padding=5
)
image_label.pack()
root.mainloop()
Выход:

Обратите внимание, что файл изображения находится в папке /assets/.
Чтобы отобразить и текст, и изображение, используйте атрибут text и параметр compound, который определяет положение изображения относительно текста.
Допустимые значения:
| Compound | Эффект |
|---|---|
| ‘top’ | Отобразить изображение над текстом. |
| ‘bottom’ | Отобразить изображение под текстом. |
| ‘left’ | Отображение изображения слева от текста. |
| ‘right’ | Отображение изображения справа от текста. |
| ‘none’ | Отобразить изображение, если оно есть, в противном случае отобразить текст. По умолчанию составной параметр имеет значение «none». |
| ‘text’ | Отображает текст, а не изображение. |
| ‘image’ | Показывает изображение, а не текст. |
Следующая программа показывает, как отобразить на метке текст и изображение:
import tkinter as tk
from tkinter import ttk
# create the root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Label Widget Image')
# display an image label
photo = tk.PhotoImage(file="./assets/python.png")
image_label = ttk.Label(
root,
image=photo,
text="Python",
compound='top'
)
image_label.pack()
root.mainloop()
Выход:

