Виджет Tkinter Label в Python — как использовать
Виджет Tkinter Label используется в Python для отображения текста или изображения на экране.
- Знакомство с виджетом Tkinter Label
- Отображение обычной метки
- Установка определенного шрифта для метки
- Отображение изображения
Знакомство с виджетом 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()
Выход: