matplotlib绘图引起 GUI绘图冲突,QCoreApplication::exec: The event loop is already running 已解决

这个警告通常是因为程序中使用了 QApplication.exec()QGuiApplication.exec() 方法来启动 Qt 的事件循环,然后尝试在 Qt 事件循环运行的同时再次启动事件循环。在本例中,这是因为 plt.show() 本身已经启动了一个事件循环。

解决方案:避免在函数中使用 plt.show()

另一种方法是不在 plot_numpy_array() 函数中使用 plt.show(),而是在调用该函数的地方来控制何时显示图形。

以下是修改后的代码:

def plot_numpy_array(data, xlabel=None, ylabel=None, legend=None):
    x = np.arange(len(data))
    fig, ax = plt.subplots()
    ax.plot(x, data, label=legend)
    ax.set_xlabel(xlabel)
    ax.set_ylabel(ylabel)
    ax.legend()
    # 不在函数中使用 plt.show(),而是在调用该函数的地方显示图形
    return fig

# 调用 plot_numpy_array() 函数显示图形
fig = plot_numpy_array(data, xlabel='X Label', ylabel='Y Label', legend='Legend')
fig.show()