Стилизация

Шрифты

Последнее обновление: 24.09.2022

Имена шрифтов

Ряд виджетов, например, Label или Text, поддерживают установку шрифта через параметр font. Каждая платформа может определять свои специфические шрифты. Но также библиотека Tk по умолчанию включает ряд именнованных шрифтов, которые могут использоваться на различных компонентах графического интерфейса и которые доступны на всех платформах:

  • TkDefaultFont: шрифт по умолчанию, который применяется, если для виджета явным образом не определен шрифт

  • TkTextFont: шрифт по умолчанию, который применяется для виджетов Entry, Listbox и ряда других

  • TkFixedFont: шрифт с фиксированной шириной

  • TkMenuFont: шрифт для пунктов меню

  • TkHeadingFont: шрифт для заголовков в Listbox и в таблицах

  • TkCaptionFont: шрифт для строки статуса в окнах

  • TkSmallCaptionFont: шрифт малого размера для диалоговых окон

  • TkIconFont: шрифт для подписей к иконкам

  • TkTooltipFont: шрифт для высплывающих окон

В принципе мы можем использовать эти шрифты не только в любых виджетах:

ttk.Label(text="Hello World", font="TkTextFont")

Tk также предоставляет дополнительный набор именнованных шрифтов, которые определены только на определенных платформах. Для их получения можно использовать функцию names() из пакета tkinter.font:

from tkinter import font

for font_name in font.names():
    print(font_name)

Например, на Windows мы получим следующий набор:

fixed
oemfixed
TkDefaultFont
TkMenuFont
ansifixed
systemfixed
TkHeadingFont
device
TkTooltipFont
defaultgui
TkTextFont
ansi
TkCaptionFont
system
TkSmallCaptionFont
TkFixedFont
TkIconFont

В данном случае выводятся и платформа-независимые, и платформо-специфичные шрифты, например, "system".

ttk.Label(text="Hello World", font="system")

Определение шрифта

За определение шрифта в Tkinter отвечает класс Font из модуля tkinter.font. Он принимет следующие параметры:

  • name: имя шрифта

  • family: семейство шрифтов

  • size: высота шрифта (в точках при положительном значении или в пикселях при негативном значении)

  • weight: вес шрифта. Принимает значения normal (обычный) или bold (жирный)

  • slant: наклон. Принимает значения roman (обычный) или italic (наклонный)

  • underline: подчеркивание. Принимает значения True (с подчеркиванием) или False (без подчеркивания)

  • overstrike: зачеркивание. Принимает значения True (с зачеркиванием) или False (без зачеркивания)

Для получения всех доступных семейств шрифтов на текущей платформе можно использовать функцию families() из модуля tkinter.font

from tkinter import font

for family in font.families():
    print(family)

Пример применения шрифтов:

from tkinter import *
from tkinter import ttk
from tkinter import font


root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

font1 = font.Font(family= "Arial", size=11, weight="normal", slant="roman", underline=True, overstrike=True)
label1 = ttk.Label(text="Hello World", font=font1)
label1.pack(anchor=NW)

font2 = font.Font(family= "Verdana", size=11, weight="normal", slant="roman")
label2 = ttk.Label(text="Hello World", font=font2)
label2.pack(anchor=NW)

root.mainloop()
Шрифты в Tkinter и Python

Также можно использовать определение шрифта в виде строки:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

label1 = ttk.Label(text="Hello World", font="Arial 11 normal roman")
label1.pack(anchor=NW)

label2 = ttk.Label(text="Hello World", font="Verdana 11 normal roman")
label2.pack(anchor=NW)

root.mainloop()

Например, в определении "Arial 11 normal roman", применяется семейство шрифта Arial, высота 11 единиц, нежирный шрифт без наклона.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850