我正在学习 Python 和 Gtk 3,使用 GObject 自省。我已经做了一些示例,我开始了解它是如何工作的。但是有一件事我不明白,我怎样才能传递一个 gpointer 参数?
我尝试使用一个接收缓冲区(使用 gpointer)的函数,我总是以这条消息结束:
无法将属性“像素”的值从 LP_c_ubyte 转换为 gpointer
(LP_c_ubyte 是我最后一次尝试,但我已经证明了很多类型)
我正在学习 Python 和 Gtk 3,使用 GObject 自省。我已经做了一些示例,我开始了解它是如何工作的。但是有一件事我不明白,我怎样才能传递一个 gpointer 参数?
我尝试使用一个接收缓冲区(使用 gpointer)的函数,我总是以这条消息结束:
无法将属性“像素”的值从 LP_c_ubyte 转换为 gpointer
(LP_c_ubyte 是我最后一次尝试,但我已经证明了很多类型)
您不能在 GObject 内省中传递指针。如果自省函数是您自己编写的,那么您应该使用例如注释您的参数文档(array length=buflen)
,其中buflen
是给出缓冲区长度的参数的名称。有关更多信息,请参阅链接页面。
如果函数位于不是您自己编写的库中,请在 API 中四处寻找对内省更友好的函数,或者向库提交错误。使用裸 s 的 APIgpointer
甚至不应该暴露给 Python。