Même en essayant et en erreur avec des programmes d'interface graphique tels que PyQt et PyQtGraph J'utilise jupyter etc. commodément, mais Il y a l'un des points les plus ennuyeux.
Lorsque j'exécute plusieurs fois un programme GUI PyQt,
** Le noyau mourra définitivement. ** **
J'ai finalement trouvé une solution de contournement.
Ceci → sys.exit (app.exec_ ())
Je pensais que c'était parce que sys.exit se terminait étrangement, mais c'était innocent. La présence ou l'absence de sys.exit () à la fin n'était pas pertinente (du moins en jupyter). (Spyder n'est pas confirmé)
app = 0 # Ajouter cette ligne app = QtGui.QApplication(sys.argv)
Avec cela seul, même si vous exécutez le même code avec jupyter plusieurs fois, Le redémarrage ennuyeux du noyau est parti! Yay!
référence https://www.reddit.com/r/learnpython/comments/45h05k/solved_kernel_crashing_when_closing_gui_spyder/
01/09/2016 postscript
Je pourrais le faire avec la méthode de mojaie dans le commentaire. Peu importe comment vous y pensez, cette méthode est juste.
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(())
De plus, PyQt4 s'exécute silencieusement et le noyau meurt, alors que J'ai été choqué que PySide ait empêché la création de plusieurs instances de QApplication à l'avance et renvoyé une erreur d'exécution. C'est la différence entre PyQt4 et PySide. .. ..
De plus, app = 0 ne peut pas être utilisé avec PySide car il provoque une erreur d'exécution. app = 0 est une magie pour PyQt4 ...
Recommended Posts