PyGObject让我使用Python array.array将浮点数的GArray传递给库(Gimp)吗?

问题描述 投票:0回答:1

一些通过GI(GObject自省)公开的Gimp方法期望一个GValue,其值为float的GArray。在Python中,我可以创建float的array.array并期望PyGObject将其正确编组到GArray吗? (松散地说,指向浮点数和数组中元素的整数计数的指针。)

特别是Gimp 2.99(开发分支)在其API中具有:

@accepts(GObject.Value, float, gsize)
@returns(none)
def value_set_float_array(value, array, length):
    # Python wrapper for gimp_value_set_float_array()

IOW,它实际上期望一个地址(指针)指向内存中连续的许多浮点中的第一个浮点,即“数组”。如果在Python中创建一个包含四个浮点数的array.array,并将其作为第二个参数传递给Gimp.value_set_float_array(),PyGObject会做正确的事情吗?

我知道我可以尝试一下,或者阅读PyGObject代码。但是,即使我可以使用它,我相信如果Gimp API具有接受GArray的GValue的构造函数(或另一个Gimp类型的Gimp.FloatArray的构造函数),可能会更好。然后我的理解是PyGObject会自动将Python的float列表编组到GArray中。换句话说,我的问题是有关GObject自省API的体系结构的指南。

Gimp支持其他绑定,例如Lua和Scheme。在我看来,Gimp应该支持GArray参数,这可能会支持所有绑定。

(这个问题源于试图使用Gimp.FloatArray类型,它似乎不是GObject。也许问题更大,Gimp应该将Gimp.FloatArray基于GObject?]

python gimp pygobject gobject gobject-introspection
1个回答
0
投票

相信它可以工作,您只需要在文档中使用(element-type float)批注:https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations

© www.soinside.com 2019 - 2024. All rights reserved.