如何读出 gtk3 对象的“glade ID”

Posted

技术标签:

【中文标题】如何读出 gtk3 对象的“glade ID”【英文标题】:How can I read out the "glade ID" of a gtk3 object 【发布时间】:2016-08-07 08:36:48 【问题描述】:

在林间空地中,可以为一个对象设置一个唯一的 ID。在代码中,可以通过gtk_builder_get_object() 搜索它的“glade ID”来获得指向该对象的指针。

但是对于我当前的用例,我只想从GObject 中读出这个 ID。这样做的 API 是什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢! ..看起来我需要改变我的方法来识别我一般创建的小部件:) 有可能,看我的回答:***.com/a/64848887/1860309【参考方案2】:

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

【讨论】:

gtk_widget_get_name() 将返回小部件名称 ('GtkButton'),而不是小部件 ID。 @user3439968 它返回在 Glade 中设置的任何内容。主要用于样式设置,这是一种可以设置任意名称的方式,可以稍后检查,即使它不是 ID。 你是对的。如果未设置名称,则返回默认小部件名称('GtkButton')。如果已设置,则返回您设置的内容。【参考方案3】:

可以使用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))

【讨论】:

以上是关于如何读出 gtk3 对象的“glade ID”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GTK3 中禁用按钮

如何使用 GTK3 和 PyGObject 绘制 GdkPixbuf

如何在 Gtk3 可选标签中设置光标颜色?

GTK3 - 如何将窗口发送到后台

Ruby GTK3 如何更改应用程序主题?

如何使用 Cairo 和 Gtk3 在 GtkDrawingArea 中绘制一条线