gtk_builder_get_object()
搜索该对象的“空地 ID”来获取指向该对象的指针。
GObject
中读出此 ID。有什么 API 可以做到这一点?
你不能。构建器 ID 存储在构建器内部,而不是存储在 GObject 中。
这样做的原因是每个构建器的 ID 必须是唯一的,如果您能够通过某些 GObject API 获取和设置它们,则无法强制执行。
您可以使用 gtk_widget_get_name() 来识别对象。
可以使用
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))
正如@ptomato所说,这似乎是不可能的。
我在文档的那一行中发现了这一点:
GObject 结构中的所有字段都是私有的 实现,并且永远不应该直接访问。
但是您可以规避它,因为在代码中的某个时刻,您通过输入的 id(或您编写的代码)引用它,因此您只需要在该点存储它即可。并以某种方式(使用变量或数据结构)将其链接到保存对象的变量的名称。
我刚刚遇到了类似的需求, get_label() 应该可以满足我的需求