Ich habe vor kurzem beschlossen, meine erste App mit Python und PySide zu schreiben. Aber ich habe ein Problem und hoffe ihr könnt mir helfen.
Python löst weiterhin Ausnahmen aus, die das "interne C ++ Objekt" gelöscht hat. Aus meiner begrenzten Erfahrung mit Python gehe ich davon aus, dass mein Objekt den Geltungsbereich verlässt und von Pythons Garbage Collector gelöscht wird.
Wie würde ich also eine mehrseitige Anwendung in Python mit PySide entwickeln? Und ich kann meine QWidgets behalten, damit ich die Seite erneut anzeigen kann.
Danke für Ihre Zeit.
Aktualisieren (Code)
%Vor%Ich würde dann normalerweise auf das Mainpanel zugreifen, indem ich Folgendes anrufe:
%Vor%Also gehe ich das falsch herum?
Nach einigem Suchen und Haare ziehen fand ich die Lösung. Ich habe alle Seiten angezeigt, indem ich sie als zentrales Widget eingestellt habe, und beim Lesen der QMainWindow-Dokumentation habe ich gefunden dass mein Widget im Grunde wie beschrieben von qt gelöscht wird:
Hinweis: QMainWindow übernimmt die Verantwortung für den Widget-Zeiger und löscht es bei die passende Zeit.
Um eine mehrseitige Anwendung zu entwickeln, werfen Sie einen Blick auf QStackedWidget .
Siehe hier: PySide Pitfalls .
Wenn ein QObject nicht in den Geltungsbereich fällt Python, es wird gelöscht. Du hast darauf achten, einen Bezug zu halten das Objekt:
- Speichern Sie es als Attribut eines Objekts, das Sie in der Nähe haben, z. self.window = QMainWindow ()
- Übergeben Sie ein übergeordnetes QObject an den Konstruktor des Objekts, damit es in Besitz genommen wird durch das Elternteil