程序执行时pyqtgraph绘图不显示

Posted

技术标签:

【中文标题】程序执行时pyqtgraph绘图不显示【英文标题】:pyqtgraph plot does not show up when program executed 【发布时间】:2019-03-27 03:24:42 【问题描述】:

我正在尝试学习如何使用 pyqtgraph,并尝试运行上述文档中给出的以下第一个简单示例:

#!/usr/bin/env python3

import pyqtgraph as pg

import numpy as np

x = np.random.normal(size=1000)

y = np.random.normal(size=1000)

pg.plot(x,y,pen=None,symbol='o',title='first graph')

我在带有 Raspbian Stretch 的 Raspberry Pi 3 上使用 python 3.5.3。

如果我在 Thonny 或 IDLE 中运行上述程序,程序运行没有任何错误,但不显示任何输出。

同样,如果我在 Linux 命令提示符下通过简单地调用程序名称(我已使用 chmod +x 使其可执行)或键入 python3 后跟程序名称来运行程序,它仍然没有显示任何内容。

但是,如果我在 Linux 提示符下键入 python3 并得到一个 python 提示符,然后逐个运行程序中的每一行,那么它会在标题为“第一个图形”的窗口中按预期显示一个散点图。

有人可以告诉我,当通过 Thonny 或 IDLE 运行或将其作为程序调用时,我需要做什么才能获得显示图形的代码?

谢谢。

【问题讨论】:

这能回答你的问题吗? PyQtGraph opening then closing straight away 【参考方案1】:

每个 GUI 都需要一个事件循环,在你的情况下你没有创建它,在下面的代码中我展示了如何做到这一点:

#!/usr/bin/env python3

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np


x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
pg.plot(x,y,pen=None,symbol='o',title='first graph')


if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

注意:不要使用任何 IDE,因为许多无法正确处理事件循环,请从终端执行。

【讨论】:

由于 IDLE 在单独的进程中运行用户代码,sys.flags.interactive == 0,并且没有运行 tk/tkinter 事件循环,我希望这段代码能够运行。如果没有,我想知道。 @TerryJanReedy 我不仅要这么说,还有一点是,当应用程序多次破坏 IDE 时,它会抛出错误代码而不是消息,所以我更喜欢在终端中运行它。 IDLE 在单独的进程中运行用户代码的一个原因是用户代码不会意外地使 IDE 崩溃。 Ajith,如果您尝试从 IDLE 编辑器运行上述内容,我想知道结果。

以上是关于程序执行时pyqtgraph绘图不显示的主要内容,如果未能解决你的问题,请参考以下文章

用Python串口实时显示数据并绘图pyqtgraph(详细教程)

pyqtgraph 滚动图:分块绘图,在当前窗口中仅显示最新的 10 秒样本

pyqtgraph 轴未正确显示

从 32 位移动到 64 位后 PyQtGraph 不工作

pyqtgraph 不显示整个数据

pyqtgraph删除pyqt4 gui中的持久图例