2011-02-13 58 views
2

我將使用Gtk2::GladeXML的應用程序轉換爲Gtk2::Builder。當讓所有部件與如何獲取使用Gtk2 :: Builder創建的窗口小部件的名稱(或ID)?

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

我可以

$widgets[0]->get_widget_name 

隨着Gtk2的視覺獲取名稱的窗口小部件的(在空地之上)::我生成器獲取所有部件與

@widgets = $builder_object->get_objects 

$widgets[0]->get_widget_name未知。 $widgets[0]->get_name只是給了我的部件類,例如GtkImage。

所以我的問題是:我如何獲得使用Gtk2 :: Builder創建的小部件的名稱(或ID)?

感謝您的任何幫助。

+0

的名字這是GtkWidget的年代和GtkBuildable的`get_name`方法之間的名稱衝突應該做的伎倆。我不知道如何在Perl中做到這一點,但你需要以某種方式調用GtkBuildable的版本。 – 2011-02-20 20:56:39

回答

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;           

這是一種黑客,但它的作品。更好/更清潔的解決方案

0

$小窗口> Gtk2的視覺::可建造:: GET_NAME()如果你需要插件

相關問題