简体   繁体   中英

Python GTK+ widget name

How do I get a widget's "name"?

When I define a GUI using Glade, I can "name" the widgets of the window but how do I recover that property when I have a widget object instance?

I've tried get_property() , get_name() and $widget.name to no avail.

Update: I am using GtkBuilder file format (ie XML format).

Resolution: a fix I have used: use the set_property("name", name) method on the widget just after getting it from GtkBuilder .

I use the class-method form, which works for me:

gtk.Buildable.get_name(widget)

References

PyGtk: gtk.Buildable.get_name

Gtk3: Gtk.Buildable.get_name

Quote from gtk2 GtkBuilder :

Prior to GTK+ 2.20, gtk.Builder was setting the "name" property of constructed widgets to the "id" attribute. In GTK+ 2.20 or newer, you have to use gtk.Buildable.get_name() instead of gtk.Widget.get_name() to obtain the "id", or set the "name" property in your UI definition.


Further

There were some reported bugs where GtkBuilder sets the widget name to be the builder ID, or doesn't set it at all. See Ubuntu and GNOME bugs. I have no idea why the bugs says that it sets the ID instead of the name as I've only ever seen the name not set.

self.builder.get_name(widget)

Where widget is the widget object. Works using Ubuntu's packaged quickly development environment

Given the widget w , what does w.get_name() return? If None , that means the widget has no name property. Maybe you want gtk.glade.get_widget_name(w) instead? (I'm not sure if the name property of the widget and the name for it in the Glade XML from which it was created are the same thing...).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM