我一直在嘗試獲取GtkBuilder對象中所有GtkWidgets的「名稱」。GtkBuilder和「名稱」
我已經設法通過gtk_builder_get_objects()
從構建器對象中獲取所有對象,並將它們存儲在GSList中。但是,當我在gobject上使用gtk_widget_get_name()
時,我得到了通用名稱,如「GtkWindow」和「GtkButton」,而不是顯示在空地中的「window1」或「button1」。
任何幫助將是非常讚賞,將使這個程序員非常高興。
我一直在嘗試獲取GtkBuilder對象中所有GtkWidgets的「名稱」。GtkBuilder和「名稱」
我已經設法通過gtk_builder_get_objects()
從構建器對象中獲取所有對象,並將它們存儲在GSList中。但是,當我在gobject上使用gtk_widget_get_name()
時,我得到了通用名稱,如「GtkWindow」和「GtkButton」,而不是顯示在空地中的「window1」或「button1」。
任何幫助將是非常讚賞,將使這個程序員非常高興。
爲生成器設置的名稱與GtkWidget
的名稱不同。 GtkBuilder
維護一個內部哈希表,該文件或字符串(從中添加了構建器)以及關聯的對象具有在GtkBuilder UI definitions
中設置的名稱。當調用gtk_builder_get_object()
時,它用於檢索對象。利用GtkWidget
的"name"
財產。在GtkBuilder UI definitions
中設置"name"
屬性以設置可以使用gtk_widget_get_name()
檢索的GtkWidget
的名稱。
希望這有助於!
非常感謝。我的意思是,謝謝。題外話題:gtkbuilder頁面沒有說或強調有兩個單獨的「名稱」屬性。你知道我可以從哪裏獲得關於glade和gtkbuilder的更好的信息嗎? – seininn
@seininn:不客氣!那麼[GTKBuilder]頁面(http://developer.gnome.org/gtk/2.24/GtkBuilder.html)永遠不會說這個名字是該集合是相關'GtkWidget'的屬性。它表示在UI描述中分配給它們的名稱。因此,與'GtkWidget'關聯的屬性''name''不是被設置的屬性,而是一個標識符。我認爲你把它弄混了:) ...我認爲在線文檔和論壇是我能想到的最好的資源''glade'&'GtkBuilder' –
我正在做同樣的事情。我能夠使用 gtk_buildable_get_name()
獲得來自.glade
文件的id=
字符串,如指定的here。
注意:在2.20之前,GtkBuilder將構造的窗口小部件的「name」屬性設置爲「id」屬性。在GTK + 2.20或更新版本中,您必須使用gtk_buildable_get_name()
而不是gtk_widget_get_name()
來獲取「id」,或者在UI定義中設置「name」屬性。
注意那些使用Perl的人:$ widget-> get_name()調用gtk_widget_get_name ()。要調用gtk_buildable_get_name(),請使用:$ name = Gtk3 :: Buildable :: get_name($ widget) – TheAmigo
下面是與GObject內省Python相同的問題:http://stackoverflow.com/q/15393120/247696 – Flimm