Ich komme aus Richtung MS Visual Studio. Leider sind die Möglichkeiten einer solchen IDE nicht zur Programmierung von Python verfügbar, aber Python ist genau das, was ich momentan programmiere. Ich nutze dazu IDLE und QT Designer auf einer Linux-Maschine.
Ich habe also in QT Designer eine Form generiert, in welcher ich ein QWidget eingefügt habe, welche ich u. a. mit einem Platzhalter für benutzerdefinierte Widgets versehen habe - dem QPdfView. Alles andere funktioniert einwandfrei. Ich kann Daten aus einer SQLite-DB nutzen, ich kann Listen generieren, ich kann beim Klick auf die Listen Aktionen ausführen - nur das Anzeigen einer simplen PDF-Datei funktioniert nicht.
Das QWidget hat die erforderlichen Methoden, wie z. B. "setPageMode(QPdfView.PageMode.MultiPage)", lt. IDLE nicht.
Die kennzeichnenden Stellen in der Form sind:
self.QWidget = QPdfView(Dialog)
self.QWidget.setObjectName(u"qwidget")
Ich kann weder mit dem Widget noch mit dem Objektnamen irgendwas veranstalten. Was übersehe ich denn hier? Bei einem Test mit einem Platzhalter für eine QWebEngine konnte ich ohne Weiteres Internet-Seiten anzeigen. Ein Anzeigen von PDF-Dateien hat auch hier nicht funktioniert.
Beispiele ohne vorgefertigte Form, in welcher die Form zur Laufzeit erstellt wird, funktionieren ja schließlich auch.
PDF-Datei in einer von QT Designer generierten Form anzeigen
-
Easter Frisian
- User
- Beiträge: 2
- Registriert: Samstag 8. November 2025, 19:54
Ich habe das Problem anders gelöst. Ich benutze nun QWebEngineView zur Anzeige der PDF und dort fehlte mir bei meinen ersten Versuchen noch der Import von den QWebEngineSettings.
Also:
from PySide6.QtWebEngineCore import QWebEngineSettings
Nun kann ich mit
web=frm_main.qwidget #Hier ist mein Widget deklariert
web.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True) #Hier sind die Settings
Die erforderlichen Settings setzen, damit auch PDF-Dateien angezeigt werden können.
Danach funktioniert die Anzeige mit
web.setUrl("file://" + file_path) #Aufruf der lokalen PDF-Datei
einwandfrei.
Danke für Deine Antwort!
Also:
from PySide6.QtWebEngineCore import QWebEngineSettings
Nun kann ich mit
web=frm_main.qwidget #Hier ist mein Widget deklariert
web.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True) #Hier sind die Settings
Die erforderlichen Settings setzen, damit auch PDF-Dateien angezeigt werden können.
Danach funktioniert die Anzeige mit
web.setUrl("file://" + file_path) #Aufruf der lokalen PDF-Datei
einwandfrei.
Danke für Deine Antwort!
- __blackjack__
- User
- Beiträge: 14223
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Easter Frisian: URIs sind genau wie Dateipfade nicht einfach Zeichenketten. Die müssen bestimmten Regeln folgen. `pathlib.Path` hat eine `as_uri()`-Methode.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
