【问题标题】:PyQtGraph opening then closing straight awayPyQtGraph 打开然后立即关闭
【发布时间】:2017-11-21 18:08:20
【问题描述】:

我正在运行文档中的一些基本代码

import pyqtgraph as pg
import numpy as np
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))

但由于某种原因,窗口打开然后立即关闭,我只看到它闪烁。是否有某种功能可以让我保持窗口打开?

【问题讨论】:

    标签: python pyqt pyqtgraph


    【解决方案1】:

    您可以通过在脚本开头创建QApplication 然后在脚本末尾调用其exec_() 方法来保持窗口打开,如下所示:

    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 ***
    

    我把 *** 放在关键线上。

    【讨论】:

    【解决方案2】:

    问题是 Python 进程在 for 循环的最后一次迭代之后完成,因此也终止了小部件。您可以使用-i 开关在执行脚本后进入交互式 Python 解释器,该脚本保留在执行脚本期间实例化的所有对象:

    python -i /path/to/script.py
    

    诚然,这是一种解决方法,pyqtgraph 可能有一种“本机”方式来实现这一点(例如 matplotlib.pyplot 中的 show 函数默认情况下会这样做)但是我找不到类似的函数pyqtgraph.

    【讨论】:

    • 即使脚本没有诸如“import pyqtgraph as pg pg.plot(data)”之类的循环,它仍然会立即打开和关闭
    • 当然,因为脚本已经结束。也就是说,在脚本的最后一条语句被执行之后,相应的进程就会终止(所有实例化的小部件也是如此)。这适用于任何 Python 脚本。提到for 循环,我刚刚提到了您的示例。通过使用-i 开关,您可以防止进程终止,而是切换到交互模式。这是一种“Python 方式”,也许还有一种“pyqtgraph 方式”,但是,如上所述,我没有找到。
    【解决方案3】:

    要进一步回答 a_guest 答案 - 要启用在 Pycharm 中查看图表,请转到:运行 -> 编辑配置 -> 解释器选项。把 -i 留在那里。

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2014-11-23
      • 2018-05-02
      相关资源
      最近更新 更多