2

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

谢谢你的帮助。

4

2 回答 2

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;                                         

这是一种黑客攻击,但它有效。欢迎使用更好/更清洁的解决方案!

于 2011-02-23T20:01:47.287 回答
0

如果您需要小部件的名称,$widget->Gtk2::Buildable::get_name() 应该可以解决问题

于 2013-03-02T21:47:26.270 回答