从C++;嵌入式解释器 我使用Boost Python在PC++应用程序中嵌入Python解释器。 (pybind11也可以)
如果我从嵌入式解释器调用matplotlib,如下所示:从C++;嵌入式解释器 我使用Boost Python在PC++应用程序中嵌入Python解释器。 (pybind11也可以),python,c++,matplotlib,boost-python,pybind11,Python,C++,Matplotlib,Boost Python,Pybind11,如果我从嵌入式解释器调用matplotlib,如下所示: import matplotlib.pyplot as plt import numpy as np plt.plot([1,2,3,4],[1,4,9,16]) plt.show() python解释器打开一个新窗口(与我的应用程序的主窗口分开)以显示matplotlib绘图 我知道这是一个远射,但有什么方法可以拦截它吗? 我希望能够捕获在这个单独窗口中显示的像素,并将它们显示在应用程序主窗口的图形上下文中 我猜这是不可能的,因为我相
import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()
python解释器打开一个新窗口(与我的应用程序的主窗口分开)以显示matplotlib绘图
我知道这是一个远射,但有什么方法可以拦截它吗?
我希望能够捕获在这个单独窗口中显示的像素,并将它们显示在应用程序主窗口的图形上下文中
我猜这是不可能的,因为我相信窗口是如何生成的。
但是想检查是否有人对此有任何见解。您可以使用matplotlib的其中一个,并将画布的像素保存到可以编辑的字符串中。下面是python代码:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot
fig = matplotlib.pyplot.figure()
ax = fig.add_subplot ( 111 )
ax.plot([1,2,3,4],[1,4,9,16])
fig.canvas.draw ()
w,h = fig.canvas.get_width_height() # width and height of the canvas
buf = fig.canvas.tostring_argb() # a byte string of type uint8
< >你的C++代码中,你可以使用变量<代码> W<代码>代码>代码> h <代码>和<代码> BUF来显示主窗口中的图形。我认为没有办法去不确定地拦截(不改变Python代码)吗?如果你的意思是,你可以把Python代码翻译成相应的C++代码。例如,
py::object matplotlib=py::module::import(“matplotlib”);py::object mpluse=matplotlib.attr(“使用”);mpluse(“Agg”)代码>。。。(使用pybind11)谢谢。python用户仍然需要调用“buf=fig.canvas.tostring_argb()”。但似乎没有办法解决这个问题。