我正在将应用从使用Gtk2::GladeXML转换为Gtk2::Builder。使用
获取所有小部件时@widgets = $glade_object->get_widget_prefix('')
我可以使用
获取小部件的名称(在Glade中设置)$widgets[0]->get_widget_name
使用Gtk2 :: Builder,我用
获取所有小部件@widgets = $builder_object->get_objects
但$widgets[0]->get_widget_name
未知。 $widgets[0]->get_name
只是给我一个小部件类,例如GtkImage。
所以我的问题是:我如何获得使用Gtk2 :: Builder创建的小部件的名称(或id)?
感谢您的帮助。
答案 0 :(得分:1)
谢谢@ johannes-sasongko! 这确实有效。所以我现在做的是:
# save original package, e.g.: 'Gtk2::Image'
my $ref = ref $widgets[0];
# get the id
my $id = ( bless $widgets[0], "Gtk2::Buildable" )->get_name;
# restore package
bless $widgets[0], $ref;
这是一种黑客行为,但它确实有效。更好/更清洁的解决方案欢迎!
答案 1 :(得分:0)
$ widget-> Gtk2 :: Buildable :: get_name()如果需要小部件的名称,应该可以做到这一点