Изменить путь поиска в QTextEdit - PullRequest
1 голос
/ 06 мая 2020

Я читал о QTextBrowser, где вы можете добавить SearchPaths. Есть ли способ реализовать то же самое в QTextEdit?

Фон:

Я хочу загрузить файл HTML в QTextEdit. Используя .set Html, он загружает текст, но не изображения. Любой браузер все правильно загружает. Пример html:

<img src="b69b37f9a55946e38923b760ab86ee71.png" />

Я понял, что Python / Qt не может найти изображение, потому что ему нужен полный путь. Однако я не хочу сохранять полный путь в моем файле html. (Потому что позже я могу изменить местоположение).

Если я изменю рабочий каталог с помощью os.chdir (), он загрузит изображение, но если я верну его обратно, изображение больше не будет отображаться. Также это решение кажется очень сложным.

1 Ответ

1 голос
/ 06 мая 2020

Метод searchPaths() QTextBrowser не имеет ничего общего с тем, что вы хотите, поскольку у него другая цель.


С другой стороны, относительные маршруты разрешаются с использованием URL-адреса, связанного с QTextDocument::DocumentUrl как обозначенные документы :

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_())
...