2009-11-21 13 views
0

Je souhaite échanger un widget dans un QHBoxLayout. Ce code semble fonctionner, mais dès que je fais le app._exec() réel, le code se bloque avec terminate called after throwing an instance of 'boost::python::error_already_set'. Est-il possible d'obtenir le message d'erreur réel? (Ou pour résoudre ce problème)Echange de widget PySide Qt4 dans une hboxlayout

gaParent = gameArea.parent().layout() 
gaParent.removeWidget(gameArea) 
gameArea = DrawingScreen() 
gameArea.setObjectName("gameArea") 
gaParent.insertWidget(0, gameArea) 
+0

peut-être un problème lors de la mise à jour des références ... avez-vous essayé d'appeler l'appel 'gameArea.setParent (None)' à gameArea.destroy() 'ou' gameArea.deleteLater() '? – mata

Répondre

0

Je suis un gars de C++ et non pas tant d'un Pythonist, alors excusez-moi si cela n'a pas de sens. Cependant, de mon point de vue, il semble que gameArea.parent(). Layout() renvoie un QLayout. Cet objet n'a pas la méthode insertWidget. En dehors de cela, je ne suis pas sûr d'où provient le boost :: python :: error_alread_set. Pouvez-vous faire une impression intelligente pour essayer de déterminer quand cette erreur survient dans l'image? Lorsque vous ne supprimez pas `gameArea`, cela fonctionne-t-il?

+0

Oui - c'est un QLayout, mais un QHBoxLayout exactement (pas de casting nécessaire ici). Malheureusement, je ne pense pas avoir accès à autre chose - il n'y a pas d'erreur avant 'app._exec()' et puis quelque chose échoue en interne, donc je ne peux pas l'attraper d'une façon quelconque - l'application entière se ferme juste. – viraptor

+0

que faire vous utilisez plus que Qt? À ma connaissance, Qt n'est pas basé sur boost ... (demande au non-pythonist) – e8johan

+0

e8johan: l'interface pyside à qt4 est générée en utilisant boost – viraptor