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
.