Как перехватить файл уценки и отобразить его в формате HTML?Python

Программы на Python
Ответить
Anonymous
 Как перехватить файл уценки и отобразить его в формате HTML?

Сообщение Anonymous »

В рамках моего приложения я хочу использовать QWebEngineView для отображения содержимого локального файла уценки в виде HTML-страницы. Локальные файлы будут заканчиваться на «.md».
В Qt версии 6.9 я написал следующий код для переопределения поведения QWebEnginePage:

Код: Выделить всё

from PyQt6.QtWebEngineCore import QWebEnginePage
from urllib.parse import urlparse
import markdown2

class MyView(QWebEnginePage):
def acceptNavigationRequest(self, qurl, navtype, mainframe) -> bool:
parse_info = urlparse(qurl.url())
if parse_info.scheme.lower() == "file":
if parse_info.path.lower().endswith(".md"):
my_html = markdown2.markdown_path(parse_info.path)
self.setHtml(myhtml,
baseUrl=qurl)
return False
В Qt 6.9 это работало, файл отображался как HTML-страница.
Сегодня моя система обновилась до Qt 6.10. Этот же код теперь приводит к сбою приложения (нет сообщения — код выхода 133). Просмотр страницы «Что изменилось» в Qt 6.10 не проливает никакого света на то, почему - по крайней мере, для меня.
Я могу доказать, что вызов setHTML является причиной сбоя, закомментировав его, и в этом случае приложение «работает» (но отображает необработанную уценку, которая представляет собой просто текст).
Таким образом, вопрос заключается в следующем: как правильно перехватить URL-адрес и заменить содержимое HTML на отображается?
РЕДАКТИРОВАТЬ:
Спасибо @ekhumoro за ссылку и решение.
Я могу подтвердить, что QTimer.singleShot(0, Lambda: self.setHtml(myhtml, baseUrl=qurl)) действительно загружает HTML так, как требуется.
Однако: продолжая разработку, я обнаружил, что подход setHTML имеет ряд недостатков при попытке вставки он используется в том, что должно быть как можно более универсальным окном браузера. В частности, это нарушает историю страницы с точки зрения пользователя. Кроме того, ограничение размера (менее 2 МБ для данных HTML) также налагает ограничения.
Я работаю над альтернативным подходом с использованием JavaScript и веб-каналов - я опубликую здесь полный рабочий пример в комментарии, когда он заработает.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ay-as-html
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»