从 Python gobject 获取 C GObject 指针

发布于 2024-12-26 04:00:34 字数 679 浏览 0 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文