【问题标题】:Read Resource into Byte Array in Qt (PyQt)在 Qt (PyQt) 中将资源读入字节数组
【发布时间】:2026-01-28 04:00:01
【问题描述】:

如何将资源文件(比如assets/font-awesome/fonts/fontawesome-webfont.ttfassets/jquery/js/jquery-1.11.0.min.jsmyresources.qrc 文件中声明并使用pyrcc5.exe 编译为myresources.py 模块)读入字节数组、字节字符串( b'') 和字符串 ('')?

我已经成功地实现了一个自定义模式处理程序(处理像 myscheme://controller/action/?param1=100 这样的请求,从 QNetworkAccessManagerQNetworkReply 派生类)。我需要这个,因为如果以后这个应用程序上线,我会体验(更多)无缝迁移过程。

现在我需要在我的自定义方案中将资源(html、css、js、图像、字体...)中的文件提供给QWebView。我试过QFilereadAll 方法。

这是我的代码:

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() 什么都不做。

【问题讨论】:

    标签: python python-3.x pyqt qwebview pyqt5


    【解决方案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())
    

    【讨论】: