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

发布于 2024-10-17 08:16:21 字数 694 浏览 7 评论 0原文

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

感谢您的任何帮助。

I am converting an app from using Gtk2::GladeXML to Gtk2::Builder. When getting all widgets with

@widgets = $glade_object->get_widget_prefix('')

I could get the name (set in Glade) of a widget with

$widgets[0]->get_widget_name

With Gtk2::Builder I fetch all widgets with

@widgets = $builder_object->get_objects

But $widgets[0]->get_widget_name is not known. $widgets[0]->get_name just gives me the widget class, e.g. GtkImage.

So my question is: How do i get the name (or id) of an widget which was created with Gtk2::Builder?

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

韵柒 2024-10-24 08:16:21

谢谢@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;                                         

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

thanks @johannes-sasongko!
this really works. so what i do now is:

# 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;                                         

this is kind of a hack, but it works. better/cleaner solutions welcome!

南渊 2024-10-24 08:16:21

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

$widget->Gtk2::Buildable::get_name() should do the trick if you need the name of widget

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文