Comment puis-je obtenir le nom (ou l'identifiant) d'un widget créé avec Gtk2::Builder ?

StackOverflow https://stackoverflow.com/questions/4985505

  •  13-11-2019
  •  | 
  •  

Question

Je convertis une application en utilisant Gtk2 ::GladeXML à Gtk2 : Constructeur.Lorsque vous obtenez tous les widgets avec

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

Je pourrais obtenir le nom (défini dans Glade) d'un widget avec

$widgets[0]->get_widget_name

Avec Gtk2 :: Builder, je récupère tous les widgets avec

@widgets = $builder_object->get_objects

Mais $widgets[0]->get_widget_name n'est pas connu. $widgets[0]->get_name me donne juste la classe de widget, par exemple.GtkImage.

Donc ma question est :Comment puis-je obtenir le nom (ou l'identifiant) d'un widget créé avec Gtk2::Builder ?

Merci pour toute aide.

Était-ce utile?

La solution

merci @johannes-sasongko !cela fonctionne vraiment.donc ce que je fais maintenant c'est :

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

c'est une sorte de hack, mais ça marche.des solutions meilleures/plus propres sont les bienvenues !

Autres conseils

$widget->Gtk2::Buildable::get_name() devrait faire l'affaire si vous avez besoin du nom du widget

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top