我已经阅读了有关QTextBrowser的信息,您可以在其中添加SearchPath。有没有一种方法可以在QTextEdit中实现相同的功能?
背景:
我想在QTextEdit中加载HTML文件。使用.setHtml可以加载文本,但不加载图像。任何浏览器都能正确加载所有内容。范例html:
<img src="b69b37f9a55946e38923b760ab86ee71.png" />
我发现,Python / Qt无法找到图像,因为它需要完整的路径。但是,我不想将完整路径保存在html文件中。 (因为稍后我可能会更改位置)。
如果使用os.chdir()更改工作目录,它将加载图像,但是如果将其更改回,则不会再次显示该图像。同样,这种解决方案似乎非常棘手。
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_())