【发布时间】:2016-08-07 08:36:48
【问题描述】:
在林间空地中,可以为一个对象设置一个唯一的 ID。在代码中,可以通过gtk_builder_get_object() 搜索它的“glade ID”来获得指向该对象的指针。
但是对于我当前的用例,我只想从GObject 中读出这个 ID。这样做的 API 是什么?
【问题讨论】:
在林间空地中,可以为一个对象设置一个唯一的 ID。在代码中,可以通过gtk_builder_get_object() 搜索它的“glade ID”来获得指向该对象的指针。
但是对于我当前的用例,我只想从GObject 中读出这个 ID。这样做的 API 是什么?
【问题讨论】:
你不能。构建器 ID 存储在内部构建器中,而不是存储在 GObject 中。
这样做的原因是每个构建器的 ID 必须是唯一的,如果您能够通过某些 GObject API 获取和设置它们,则无法强制执行。
【讨论】:
您可以使用gtk_widget_get_name() 来识别对象。
【讨论】:
可以使用Gtk.Buildable.get_name(object)。此方法将返回 Glade 对象 ID。
这个 sn-p 将打印 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))
【讨论】: