Как импортировать шрифт в 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 шт):

Автор решения: Raven

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)
→ Ссылка