如何读出gtk3对象的“空地ID”

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

在空地中,可以为对象设置唯一的 ID。在代码中,可以通过

gtk_builder_get_object()
搜索该对象的“空地 ID”来获取指向该对象的指针。

但是对于我当前的用例,我只想从

GObject
中读出此 ID。有什么 API 可以做到这一点?

gtk3 glade
5个回答
6
投票

你不能。构建器 ID 存储在构建器内部,而不是存储在 GObject 中。

这样做的原因是每个构建器的 ID 必须是唯一的,如果您能够通过某些 GObject API 获取和设置它们,则无法强制执行。


3
投票

您可以使用 gtk_widget_get_name() 来识别对象。


2
投票

可以使用

Gtk.Buildable.get_name(object)
。该方法将返回 Glade 对象 id。

此代码片段将打印您的 Glade XML 中的所有对象 ID:

builder = Gtk.Builder()
builder.add_from_file("my-window.glade"))
for obj in builder.get_objects():
    print(Gtk.Buildable.get_name(obj))

0
投票

正如@ptomato所说,这似乎是不可能的。

我在文档的那一行中发现了这一点:

GObject 结构中的所有字段都是私有的 实现,并且永远不应该直接访问。

但是您可以规避它,因为在代码中的某个时刻,您通过输入的 id(或您编写的代码)引用它,因此您只需要在该点存储它即可。并以某种方式(使用变量或数据结构)将其链接到保存对象的变量的名称。


0
投票

我刚刚遇到了类似的需求, get_label() 应该可以满足我的需求

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