Как получить имя (или идентификатор) в виджете, который был создан с помощью Gtk2 :: Builder? - PullRequest
2 голосов
/ 13 февраля 2011

Я конвертирую приложение из 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?

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

спасибо, @ 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;                                         

это что-то вроде хака, но это работает. лучшие / более чистые решения приветствуются!

0 голосов
/ 03 марта 2013

$ widget-> Gtk2 :: Buildable :: get_name () должна помочь, если вам нужно имя виджета

...