Читать ресурс в байтовый массив в 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())