问题标签 [gobject-introspection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

python - Python 是否有用于 PyGObject 的“指针”等价物?

我正在尝试使用Gtk.SelectionData.set,其中一个参数是

数据(字节)——指向数据的指针(将被复制)

我要传递的数据是 a Gtk.EventBox,但我不清楚如何创建指向该数据的指针,或者是否应该。GObject 的 Python 绑定的文档是从 C 文档自动生成的,据我所知,Python 没有直接等效于 C 中的指针。

我找不到在 Python 代码中使用此函数的任何示例。我在 C 中找到了示例,例如

这里开始,但我不明白如何将其翻译成 Python。

0 投票
1 回答
466 浏览

linux - 无法安装 gobject-introspection - 符号查找错误:和未定义的符号:g_unicode_type_get_type

无法安装 gobject-introspection - 符号查找错误:和未定义的符号:g_unicode_type_get_type

我尝试编译 Gtk4,并下载 gobject-introspection 1.30、1.40、1.50、1.64.1。除了最后一个产生另一个错误的错误之外,所有错误都失败了。

gobject-introspection 1.30、1.40、1.50 的错误,

0 投票
1 回答
112 浏览

perl - Cairo::SolidPattern 不是 GooCanvas2::CairoPattern 类型

我正在尝试将旧的 Gtk2 perl 脚本转换为 Gtk3。下面是 Gtk2 版本的样子:

这是我的 Gtk3 尝试:

但这会导致错误:

我也尝试插入$pattern = GooCanvas2::CairoPattern->new($pattern);,但没有帮助:

但是查看 的来源GooCanvas2.pm,它确实GooCanvas2通过 Glib::Object::Introspection 加载。

任何建议如何解决这个问题?

0 投票
1 回答
32 浏览

gobject-introspection - 返回 GObject 指针的抽象类型中的虚函数不是自省的

我正在玩弄libpeas,我偶然发现了 gobject-introspection 工作方式的问题。

其中libpeas有一种类型称为PluginLoader(请参见此处)。

有一个称为create_extension返回的方法,PeasExtension *它是指向 a 的点GObject。当我将此类型添加到 gobject-introspection 并检查生成的 GIR 文件以了解此方法时,我可以看到它被标记为introspectable="0"

当我将返回值更改为void *并重新编译时,该introspectable="0"属性从 GIR 文件中消失了。如果我将其更改为,GObject *则该introspectable="0"属性仍然存在。

当它返回 GObject 的实例(指针)时,它看起来变得不可自省。但我不明白为什么?

通过阅读 gobject introspection 文档,看起来返回 GObject 实例是一个有效的用例。也许它与那种PluginLoader类型是抽象的并且这是一个虚拟方法有关?

在不更改方法签名的情况下,任何注释都可以帮助使该对象可自省吗?

0 投票
0 回答
34 浏览

python - Meson 安装基于 GObject 的库的 GObject 自省绑定

我正在使用介子构建一个基于 GObject 的库。该项目构建良好。但是,当我运行sudo ninja install它时,它将 typelib 安装到:

将 src/Edf-0.0.typelib 安装到 /usr/local/lib/x86_64-linux-gnu/girepository-1.0

然后当我运行 python 时:

我得到一个例外:

或者当我试图变得固执时:

当我运行时:

export GI_TYPELIB_PATH='/usr/local/lib/x86_64-linux-gnu/girepository-1.0'或者 export GI_TYPELIB_PATH='./src'我可以分别从系统或我的构建目录中使用 python 导入引入的库。

python 或 gobject introspection 应该能够在其中找到 typelib/usr/local/lib/x86_64-linux-gnu/girepository-1.0还是应该更新我的构建?例如。在介子中指定一个前缀。

0 投票
0 回答
142 浏览

python-3.x - 如何在 Yocto / OpenEmbeded 中安装 python 和 gobject 运行时?

我的helloword代码:

如何在 Yocto / OpenEmbeded 中为其安装运行时?

/usr/lib/girepository-1.0/在rootfs之后

0 投票
2 回答
129 浏览

python - 使用 jedi-vim 使用 gobject introspection 在 python 中自动完成自己的 gobject 派生库

我正在尝试创建一个使用 gobject 库作为基础的共享 C 库。所以我的对象在 GObject 中继承自 GObject。GObject 允许通过 GObject 内省绑定到所有不同的脚本语言,例如 Python。然后从 python 中可以从 gi.repository 导入库。

Vim 通过 jedi-vim 提供自动补全功能。这对于使用 GObject 自省的其他库(例如 GLib 和 GTK)来说是开箱即用的。我想使用 pytest 来运行库的一些单元测试。我非常想使用带有自动完成功能的 vim 为我自己的库编辑我的文件。所以如果我像上面那样导入一个库,我确实会为 GLib 自动完成,但不会为我的 Edf 模块。

我试图通过将 GI_TYPELIB_PATH 环境变量设置为包含我的 Edf.typelib 文件的目录来让自动完成工作。我还创建了一个 debian 包并将库安装到/usr/lib/x86_64-linux-gnu/和 typelib 到/usr/lib/x86_64-linux-gnu/girepository-1.0/,这两种方法都足以在 REPL 中自动完成,例如 bpython3、ipython3 甚至是 python REPL,但是我无法使用 jedi- 完成vim里面的vim。

我会很高兴看到它工作。有没有人有任何提示让它工作?

最好的问候,并感谢您的关注。

0 投票
2 回答
40 浏览

python-3.x - Gtk.TreeView 按键事件的奇怪行为

我有一个Gtk.Treeview显示项目的行。我想使用按钮 1(默认行为)选择行,并且在单击按钮 3(右)时,应该会出现一个上下文菜单。这是我得到的结果:

1 - 使用connect连接到button-press-event, 工作正常,但是,由于此处理程序在默认(树视图)处理程序之前调用,行选择尚未更改,读取选定行会给出先前选择的行。

2 -connect-after用于连接到button-press-event. 但是现在我的处理程序不再被调用......好像内部处理程序以return True. 奇怪的是,双击确实会调用我的处理程序。

如何让 button-3 先更改选择,然后调用我的处理程序?

这是该程序的简短版本,取消注释标记的行以测试 1 或 2。

顺便说一句:我认为可能set_activate_on_single_click会有所帮助 - 没有运气。

0 投票
1 回答
114 浏览

python - 如何从 python 调用用 C 编写的 GObject 类的方法?

我正在尝试在 C 中创建一个 GObject 类并以某种方式对其进行注释,以便我可以使用 Python 中的类 - 但我认为缺少一些东西,因为我遇到了我无法理解的奇怪错误。任何帮助将非常感激!

如果我尝试从其他 C 代码中使用它,该类将按预期工作,并且我可以生成.gir.typelib文件,据我所知,XML 看起来是正确的。

当我尝试从 Python 创建类的实例时,似乎没有调用对象的_class_initand_init函数,如果我尝试调用方法,则会出现异常:

我尝试为我的bop_foo_obj_new_class_init(_init


这是我试图开始工作的代码:

bop.h:

bop.c:

生成的 .gir 文件:

0 投票
0 回答
11 浏览

gobject-introspection - 为什么 g-ir-scanner 不从我的 c 文件中获取任何 GtkDoc 注释?

我正在为一些基于 gob2 的旧小部件生成 GLib 自省,但我无法让 g-ir-scanner 获取我的任何 GtkDoc 注释,并且 gir 文件仅包含自省注释。

这就是我所做的。

这是 gob2 文件 tut-gob-greeter.gob

这是我运行以从 gob 文件和共享库生成 h 和 c 文件的命令

这是g-ir-scanner命令:

即使我看到 gob2 将我的 GtkDoc 注释转移到 c 文件中,这些都没有被 g-ir-scanner 拾取!这是c文件的摘录:

生成的 gir 文件不包含source-position源自 c 文件的任何引用。我缺少什么以及如何调试解析器?