Как импортировать шрифт в PyQT6
Читал на форумах что PyQT6 не поддерживает файлы ресурсов. Воспользовался модулем pyqt6rc 0.6.0. Попробовал что-то вроде этого (на странице модуля был приведён пример только с иконками):
from importlib_resources import path
with path("myPackage.resources.fonts", ":/font/awesonefont.ttf") as f_path:
QFontDatabase.addApplicationFont(str(f_path))
В итоге ошибка: ModuleNotFoundError: No module named 'myPackage'
Пытался всё таки этим модулем задвоить файл
pyqt6sp resources.qrc -o resources.py
Снова неудача Not template file resources.qrc
Сам файл resources.qrc:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>font/awesonefont.ttf</file>
</qresource>
</RCC>
Что я неправильно делаю? Гугл даёт мало информации по этой проблеме и почти всё что есть это примеры на Pyqt5.
Ответы (1 шт):
PyQt6 почти полностью повторяет PySide6 и наоборот. Так что можно использовать инструмент rcc из библиотеки PySide6. Установите PySide6 через pip install pyside6, а затем командой pyside6-rcc resources.qrc -o resources.py конвертируйте файл ресурсов и используйте его уже в вашей программе PyQt6.
Так или иначе из файла ресурсов импорт шрифтов не предусмотрен и не имеет смысла, ведь в любом случае придётся воспользоваться базой данных шрифтов:
from PyQt6.QtGui import (QFontDatabase, QFont)
# Указываем путь к шрифту
font_path = 'awesomefont.ttf' # Можно даже в папку fonts.
# Тогда получим: 'fonts/awesomefont.ttf'
# Создаем базу данных шрифтов и загружаем туда шрифт по пути font_path
QFontDatabase.addApplicationFont(font_path)
# Получаем семейство шрифтов по ID 0, поскольку мы добавили ObelixPro первым.
family = QFontDatabase.applicationFontFamilies(0)
# Создаем шрифт
font = QFont(family[0], 12)