【发布时间】:2019-09-07 04:40:36
【问题描述】:
我想通过嵌入来自 C 应用程序的调用来重新使用在交互模式下使用 matplotlib 的 Python 脚本——我需要做什么才能在嵌入式 Python 中获得交互模式脚本有效吗?
我使用 PyRun_SimpleString(); 设置了一个非常简单的示例。它在交互模式关闭时工作,但当交互模式处于绘图窗口时,绘图窗口仅在应用程序结束前显示一小段时间
#include <Python.h>
int
main(int argc, char *argv[])
{
wchar_t *program = Py_DecodeLocale(argv[0], NULL);
if (program == NULL) {
fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
exit(1);
}
Py_SetProgramName(program); /* optional but recommended */
Py_Initialize();
PyRun_SimpleString("from time import time,ctime,sleep\n"
"import matplotlib.pyplot as plt\n"
"import matplotlib\n"
"print(matplotlib.get_backend())\n"
"plt.ion()\n"
"plt.plot([1,2,3,4,3,5,7])\n"
"sleep(5)\n");
Py_Finalize();
PyMem_RawFree(program);
return 0;
}
matplotlib 使用的后端是 Qt4Agg。当我在 Python 解释器中执行上面的行时,它的行为与我预期的一样。如果我将 plt.ion() 更改为 plt.ioff() 并在 plt.plot() 调用之后放入 plt.show() ,我也会看到情节。
【问题讨论】:
标签: python c matplotlib