Читать ресурс в байтовый массив в Qt (PyQt)

Как я могу прочитать файл ресурса (скажем, как assets/font-awesome/fonts/fontawesome-webfont.ttf или же assets/jquery/js/jquery-1.11.0.min.js который объявлен в myresources.qrc файл и использование pyrcc5.exe составлен в myresources.py модуль) в байтовый массив, байтовую строку (b '') и строку ('')?

Мне успешно удалось реализовать пользовательский обработчик схемы (для обработки запросов, таких как myscheme://controller/action/? Param1=100, производных классов от QNetworkAccessManager а также QNetworkReply). Мне это нужно, потому что если позже это приложение будет подключено к Интернету, у меня будет (более) плавный процесс миграции.

Теперь мне нужно обслуживать файлы в ресурсах (html, css, js, images, шрифты,...) для QWebView в моей нестандартной схеме. я пробовал QFile И его readAll метод.

Это мой код:

f = QFile('qrc:///assets/jquery/js/jquery-1.11.0.min.js')
f.open(QIODevice.ReadOnly | QIODevice.Unbuffered)

try:
    self.content = f.readAll()
finally:
    f.close()

Похоже на то f.readAll() ничего не делает.

1 ответ

Решение

Ваш путь к ресурсу неверен, а обработчик исключений является избыточным, потому что ошибка не возникнет, если открытие / чтение не удастся (это не ошибка или сбой - Qt просто работает иначе, чем Python).

Попробуйте что-то вроде этого:

    stream = QFile(':/assets/jquery/js/jquery-1.11.0.min.js')
    if stream.open(QFile.ReadOnly):
        js = str(stream.readAll(), 'utf-8')
        stream.close()
    else:
        print(stream.errorString())
Другие вопросы по тегам