如何在使用Gtk2 :: Builder创建的小部件上获取名称(或id)?

时间:2011-02-13 17:00:07

标签: perl gtk gtkbuilder

我正在将应用从使用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)?

感谢您的帮助。

2 个答案:

答案 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()如果需要小部件的名称,应该可以做到这一点