如何从 wxPython Phoenix 中的缓冲区实例化流?

How to instantiate a stream from a buffer in wxPython Phoenix?

一些上下文:

我正在尝试从流创建图像。
未来图像当前从内存加载到缓冲区中。

我已经尝试过类似的东西:

image_stream = wx.MemoryOutputStream()  # error: no attribute 'MemoryOutputStream'
image_stream.Write( image_buffer, buffer_size )
image = wx.Image( stream )
bitmap = wx.Bitmap( image )

基本上,wx.InputStreamwx.OutputStream和它们的所有祖先都是抽象的-类,我无法实例化它们。

如您所见here and there,他们的子类 的文档似乎丢失了。

从上面代码写的错误也可以看出,那些类还没有实现

有没有办法在 wxPython Phoenix 中实例化这样的流?或者解决方法?

顺便问一下,正如我将写入然后从流中读取的那样,它应该是输入流、输出流还是一个然后另一个?

wxImage 对象可以直接从任何支持 Python 缓冲区接口的对象创建,(字节数组、内存视图、numpy 数组等)见 this section in the Migration Guide and also the __init__ and Create method overloads in the API documentation 有一个名为data

此外,任何Python"file-like object"都可以自动转换为wx流类,所以Image构造函数和Create方法重载其中接受一个stream参数可以自动使用任何兼容的对象(打开的文件、StringIO 等),因此您不需要创建 wx.InputStreamwx.OutputStream.