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