Comment résoudre le problème de redémarrage du noyau lors de l'exécution du système PyQt avec jupyter ou Spyder IDE

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.

Peu importe si sys.exit () était présent à la fin.

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é)

Remplacez simplement l'application par quelque chose d'autre juste avant! (PyQt4 uniquement. Ne peut pas être utilisé avec PySide)

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

Comment résoudre le problème de redémarrage du noyau lors de l'exécution du système PyQt avec jupyter ou Spyder IDE
[Python] Solution au problème que les éléments sont liés lors de la copie d'une liste
Trouver une solution au problème N-Queen avec un algorithme génétique (2)
La façon habituelle d'ajouter un noyau avec Jupyter Notebook
Connectez le noyau Jupyter Notebook à Spyder avec Jupytext activé
Trouver une solution au problème N-Queen avec un algorithme génétique (1)
Solution au problème qui ne se termine pas lors de l'installation d'OpenCV (PEP517)
Une histoire qui a échoué lors de la tentative de suppression du suffixe d'une chaîne avec rstrip
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()
Comment gérer le problème de l'échec de la construction de pandas 1.1.0 ou version ultérieure sur Alpine Linux
Solution temporaire au problème que le fichier exe créé par PyInstaller est confondu avec un virus cheval de Troie par AVAST ou AVG
Une histoire sur la façon de traiter le problème CORS
Solution au problème que l'affichage est corrompu lorsque la commande .exe est incluse dans la boucle while dans wsl2
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom