问题标签 [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.
python - Python 是否有用于 PyGObject 的“指针”等价物?
我正在尝试使用Gtk.SelectionData.set
,其中一个参数是
数据(字节)——指向数据的指针(将被复制)
我要传递的数据是 a Gtk.EventBox
,但我不清楚如何创建指向该数据的指针,或者是否应该。GObject 的 Python 绑定的文档是从 C 文档自动生成的,据我所知,Python 没有直接等效于 C 中的指针。
我找不到在 Python 代码中使用此函数的任何示例。我在 C 中找到了示例,例如
从这里开始,但我不明白如何将其翻译成 Python。
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 的错误,
perl - Cairo::SolidPattern 不是 GooCanvas2::CairoPattern 类型
我正在尝试将旧的 Gtk2 perl 脚本转换为 Gtk3。下面是 Gtk2 版本的样子:
这是我的 Gtk3 尝试:
但这会导致错误:
我也尝试插入$pattern = GooCanvas2::CairoPattern->new($pattern);
,但没有帮助:
但是查看 的来源GooCanvas2.pm
,它确实GooCanvas2
通过 Glib::Object::Introspection 加载。
任何建议如何解决这个问题?
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
类型是抽象的并且这是一个虚拟方法有关?
在不更改方法签名的情况下,任何注释都可以帮助使该对象可自省吗?
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
还是应该更新我的构建?例如。在介子中指定一个前缀。
python-3.x - 如何在 Yocto / OpenEmbeded 中安装 python 和 gobject 运行时?
我的helloword代码:
如何在 Yocto / OpenEmbeded 中为其安装运行时?
我/usr/lib/girepository-1.0/
在rootfs之后
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。
我会很高兴看到它工作。有没有人有任何提示让它工作?
最好的问候,并感谢您的关注。
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
会有所帮助 - 没有运气。
python - 如何从 python 调用用 C 编写的 GObject 类的方法?
我正在尝试在 C 中创建一个 GObject 类并以某种方式对其进行注释,以便我可以使用 Python 中的类 - 但我认为缺少一些东西,因为我遇到了我无法理解的奇怪错误。任何帮助将非常感激!
如果我尝试从其他 C 代码中使用它,该类将按预期工作,并且我可以生成.gir
和.typelib
文件,据我所知,XML 看起来是正确的。
当我尝试从 Python 创建类的实例时,似乎没有调用对象的_class_init
and_init
函数,如果我尝试调用方法,则会出现异常:
我尝试为我的bop_foo_obj_new
类_class_init
(_init
这是我试图开始工作的代码:
bop.h:
bop.c:
生成的 .gir 文件:
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 文件的任何引用。我缺少什么以及如何调试解析器?