从 Python gobject 获取 C GObject 指针
我正在使用 pywebkitgtk,它是一个代码生成的绑定 - 所以有大量的 GObject 子类。绑定并不完整,我还使用 ctypes 做了很多事情。
但现在我需要使用 Python 中的一个对象作为 ctypes 库调用的参数。显然,这是行不通的,并且传递 Python 对象的内存地址也不是真正的赢家。如何获取对支持 Python 对象的 GObject 的内存引用?
这是一个不起作用的示例,但可能会让您了解我在说什么。
>>> import ctypes
>>> libwebkit = ctypes.CDLL('libwebkit-1.0.so')
>>> import webkit
>>> webview = webkit.WebView()
>>> libwebkit.webkit_web_view_get_zoom_level(webview) #yes, I know the binding exposes this
ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1
再说一遍,这只是一个说明这一点的示例 - 我希望 gobjects 的内存引用与 ctypes 一起使用。
I'm working with pywebkitgtk, which is a codegen'd binding- so there are a ton of GObject subclasses. The binding isn't complete, and I use ctypes to do a bunch of stuff in addition.
But now I need to use an object I've got- in Python- as an argument to a ctypes library call. Clearly, that won't work, and passing the memory address of the Python object isn't really a winner, either. How can I get a memory reference to the GObject backing the Python object?
Here's an example of something that doesn't work, but might give you an idea what I'm talking about.
>>> import ctypes
>>> libwebkit = ctypes.CDLL('libwebkit-1.0.so')
>>> import webkit
>>> webview = webkit.WebView()
>>> libwebkit.webkit_web_view_get_zoom_level(webview) #yes, I know the binding exposes this
ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1
Again, this is just an example to illustrate the point- I want memory refs for gobjects to use with ctypes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论