Python >> Tutoriel Python >  >> Python GUI >> PyQt GUI

PyQtGraph s'ouvre puis se ferme tout de suite

Vous pouvez garder la fenêtre ouverte en créant un QApplication au début du script puis en appelant son exec_() méthode à la fin de votre script, comme ceci :

import pyqtgraph as pg
import numpy as np
import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)  # Create QApplication ***

x = np.arange(1000)
y = np.random.normal(size=(3, 1000))
plotWidget = pg.plot(title="Three plot curves")
for i in range(3):
    plotWidget.plot(x, y[i], pen=(i, 3))

# Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        app.exec_()  # Start QApplication event loop ***

J'ai mis *** sur les lignes clés.


Le problème est que le processus Python se termine après la dernière itération du for boucle et termine donc également les widgets. Vous pouvez utiliser le -i switch afin d'entrer dans l'interpréteur Python interactif après l'exécution du script qui conserve tous les objets qui ont été instanciés lors de l'exécution du script :

python -i /path/to/script.py

Certes c'est plutôt une solution de contournement et pyqtgraph a probablement un moyen "natif" d'y parvenir (comme le show fonction de matplotlib.pyplot le fait par défaut) mais je n'ai pas trouvé de fonction similaire pour pyqtgraph .