Виджет Tkinter Label в Python — как использовать

Виджет 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()

Выход:

Как отобразить на метке текст и изображение

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *