Как получить «имя» виджета?
Когда я определяю GUI с помощью Glade, я могу «назвать» виджеты окна, но как мне восстановить это свойство, когда я есть экземпляр объекта виджета?
Я пытался get_property ()
, get_name ()
и $ widget.name
безрезультатно.
Обновление: Я использую формат файла GtkBuilder (то есть формат XML).
Разрешение: исправление, которое я использовал: используйте метод set_property ("name", name)
для виджета сразу после его получения из GtkBuilder
.
Я использую форму класса-метода, которая у меня работает:
gtk.Buildable.get_name(widget)
PyGtk: gtk.Buildable.get_name
Gtk3: Gtk.Buildable.get_name
Цитата из gtk2 GtkBuilder :
До GTK + 2.20 gtk.Builder устанавливал свойство "name" для построенные виджеты для атрибута "id". В GTK + 2.20 или новее вы необходимо использовать gtk.Buildable.get_name () вместо gtk.Widget.get_name () чтобы получить «id» или установить свойство «name» в определении пользовательского интерфейса.
Сообщалось о некоторых ошибках, при которых GtkBuilder устанавливает имя виджета как идентификатор построителя или не устанавливает его вообще. См. Ошибки Ubuntu и GNOME . Я понятия не имею, почему в багах написано, что он устанавливает идентификатор вместо имени, поскольку я только когда-либо видел, что имя не установлено.
Учитывая виджет w
, что возвращает w.get_name()
? Если None
, это означает, что у виджета нет свойства name
. Может быть, вместо этого нужно gtk.glade.get_widget_name(w)
? (Я не уверен, что свойство name
виджета и его имя в Glade XML, из которого он был создан, - это одно и то же...).