这个警告通常是因为程序中使用了 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()