在QTextEdit中更改搜索路径

问题描述 投票:0回答:1

我已经阅读了有关QTextBrowser的信息,您可以在其中添加SearchPath。有没有一种方法可以在QTextEdit中实现相同的功能?

背景:

我想在QTextEdit中加载HTML文件。使用.setHtml可以加载文本,但不加载图像。任何浏览器都能正确加载所有内容。范例html:

<img src="b69b37f9a55946e38923b760ab86ee71.png" />

我发现,Python / Qt无法找到图像,因为它需要完整的路径。但是,我不想将完整路径保存在html文件中。 (因为稍后我可能会更改位置)。

如果使用os.chdir()更改工作目录,它将加载图像,但是如果将其更改回,则不会再次显示该图像。同样,这种解决方案似乎非常棘手。

python html pyqt qtextedit qtextdocument
1个回答
0
投票

QTextBrowser的searchPaths()方法与您想要的东西无关,因为它还有另一个目标。


另一方面,相对路径使用与QTextDocument::DocumentUrl关联的URL进行解析,如the docs所示:

QTextDocument :: DocumentTitle 0文档的标题。QTextDocument :: DocumentUrlÂ1文档的网址。的loadResource()函数在加载时使用此url作为基础相对资源。

此外,在the implementation中容易观察到此行为。

因此解决方案是设置图像所在目录的路径:

import sys

from PyQt5 import QtCore, QtGui, QtWidgets

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QTextEdit()
    w.resize(640, 480)
    w.show()

    directory = "/path/of/image_directory"
    w.document().setMetaInformation(
        QtGui.QTextDocument.DocumentUrl,
        QtCore.QUrl.fromLocalFile(directory).toString() + "/",
    )

    HTML = """<img src="b69b37f9a55946e38923b760ab86ee71.png"/>"""
    w.setHtml(HTML)

    sys.exit(app.exec_())
© www.soinside.com 2019 - 2024. All rights reserved.