Question

J'ai récemment décidé d'écrire ma première application avec Python et PySide. Mais j'ai un problème et espère que vous les gars peuvent aider.

Python conserve déclencher des exceptions que la « interne C ++ objet » est supprimé. D'après mon expérience limitée à la figure Python je que mon objet va hors de portée et d'être supprimé par le Garbage Collector de Python.

Alors, comment pourrais-je aller sur la conception d'une application multi-pages en Python avec PySide. Et être capable de garder mes QWidgets pour que je puisse montrer à nouveau la page.

Merci pour votre temps.

Mise à jour (Code)

instancing = None
def instance():
   global instancing
   if instancing == None:
      instancing = WPZKernel()
   return instancing

class WPZKernel:
    win = None
    mainscreen = None

    def mainwindow(self):
        if self.win == None:
          self.win = GMKMainWindow(self)
        return self.win

    def main_panel(self):
        if self.mainscreen == None:
           self.mainscreen = GMKMainScreen(self.mainwindow())
        return self.mainscreen

Je alors accéder normalement mainpanel en appelant:

import kernel
kernel.instance().main_panel()

Alors que je vais sur ce dans le mauvais sens?

Était-ce utile?

La solution

Après quelques recherches et tirer les cheveux, je l'ai trouvé la solution. Je montrais toutes les pages en les définissant comme le widget central, et en lisant la documentation QMainWindow Je trouve que mon widget de obtient essentiellement supprimé par qt comme indiqué:

Note: QMainWindow prend possession de le pointeur widget et le supprime à le temps approprié.

Donc, pour développer une application multi-pages plutôt prendre un regard sur QStackedWidget .

Autres conseils

Voir ici:. PySide Pitfalls

Si un QObject tombe hors de portée en Python, il sera effacé. Tu as prendre soin de garder une référence à l'objet:

  • Magasin comme un attribut d'un objet que vous gardez autour, par exemple self.window = QMainWindow ()
  • Passez un QObject parent au constructeur de l'objet, il obtient appartient par le parent
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top