Wie kann ich eine Markdown-Datei abfangen und als HTML anzeigen?Python

Python-Programme
Anonymous
 Wie kann ich eine Markdown-Datei abfangen und als HTML anzeigen?

Post by Anonymous »

Als Teil meiner Anwendung möchte ich QWebEngineView verwenden, um den Inhalt einer lokalen Markdown-Datei als HTML-Seite anzuzeigen. Lokale Dateien enden auf „.md“.
In Qt-Version 6.9 habe ich den folgenden Code geschrieben, um das QWebEnginePage-Verhalten zu überschreiben:

Code: Select all

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
In Qt 6.9 funktionierte dies, die Datei wurde als HTML-Seite gerendert.
Heute wurde mein System auf Qt 6.10 aktualisiert. Derselbe Code führt jetzt zum Absturz der Anwendung (keine Meldung – Exit-Code 133). Ein Blick auf die Qt 6.10-Seite „Was hat sich geändert“ gibt keinen Aufschluss darüber, warum – zumindest für mich.
Ich kann beweisen, dass der setHTML-Aufruf die Ursache für den Absturz ist, indem ich ihn auskommentiere. In diesem Fall „funktioniert“ die Anwendung (gibt aber rohen Markdown aus, der nur einfacher Text ist).
Die Frage ist also: Wie kann eine URL richtig abgefangen und der zu seinde HTML-Inhalt ersetzt werden? angezeigt?
BEARBEITEN:
Danke an @ekhumoro für den Link und die Lösung.
Ich kann bestätigen, dass QTimer.singleShot(0, lambda: self.setHtml(myhtml, baseUrl=qurl)) den HTML-Code tatsächlich wie erforderlich lädt.
Allerdings: Während ich mich weiterentwickle, stelle ich fest, dass der setHTML-Ansatz beim Versuch, einzufügen, eine Reihe von Nachteilen hat Es handelt sich um die Verwendung in einem Browserfenster, das möglichst allgemein gehalten sein soll. Insbesondere wird der Seitenverlauf aus Benutzersicht unterbrochen. Auch die Größenbeschränkung (unter 2 MB für HTML-Daten) bringt Einschränkungen mit sich.
Ich arbeite an einem alternativen Ansatz mit JavaScript und Webkanälen – ich werde hier in einem Kommentar ein vollständig funktionierendes Beispiel veröffentlichen, wenn es funktioniert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post