python - 更改 QTextEdit 中的搜索路径
问题描述
我已阅读有关 QTextBrowser 的信息,您可以在其中添加 SearchPaths。有没有办法在 QTextEdit 中实现相同的功能?
背景:
我想在 QTextEdit 中加载一个 HTML 文件。使用 .setHtml 它加载文本,但不加载图像。任何浏览器都能正确加载所有内容。示例 html:
<img src="b69b37f9a55946e38923b760ab86ee71.png" />
我发现,Python/Qt 找不到图像,因为它需要完整路径。但是,我不想将完整路径保存在我的 html 文件中。(因为稍后我可能会更改位置)。
如果我使用 os.chdir() 更改工作目录,它会加载图像,但如果我将其更改回来,图像不会再次显示。而且这个解决方案似乎很棘手。
解决方案
QTextBrowser 的searchPaths()
方法与您想要的无关,因为它有另一个目标。
另一方面,相对路由是使用与文档QTextDocument::DocumentUrl
相关联的url 解析的:
QTextDocument::DocumentTitle 0 文档的标题。
QTextDocument::DocumentUrl 1 文档的 url。loadResource() 函数在加载相关资源时使用此 url 作为基础。
此外,在实现中很容易观察到这种行为。
所以解决办法是设置图片所在目录的路径:
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_())
推荐阅读
- autodesk-forge - Autodesk 用户管理 API
- javascript - 当我最小化窗口时,如何控制应该显示图像的哪些部分?
- python - 如何返回字符串向量匹配的numpy矩阵行的索引?
- python - Python 3.7.3 路径和 VS 代码冲突
- python - 如何使用 AWS CLI 创建 python AWS Lambda 函数?
- javascript - 如何从 php 中的 soundcloud 剧集获取最新剧集?
- php - 如何根据 ID 回显 WordPress 图像
- snapchat - Snapkit 中的friendUserId 是什么?
- r - 使用 R 从论坛抓取网页,如何删除以前用户的引用并导航到下一页?
- python-3.x - 为什么我无法在 Mac 上显示 Tkinter Python 中按钮的背景颜色?