У меня есть виджет gtk, и я хочу выяснить, есть ли в его потомках другой виджет. Если он есть, я хочу вернуть его, в противном случае вернуть None. Это простая рекурсивная проблема, но я не могу найти правильный способ сделать это.
В XML-файле Glade у меня есть:
<object class="GtkDialog" id="monkey">
[...]
<object class="GtkTreeView" id="ook">
и вызов find(my_monkey_object, 'ook')
должны вернуть объект GtkTreeView.
find()
должно быть чем-то похожим на
def find (node, id):
if node.XXX() == id: return node
for child in node.get_children():
ret = find(child, id)
if ret: return ret
return None
Я не уверен, какой метод XXX () мне нужно использовать. get_name()
выглядел обнадеживающим, но возвращает имя класса объекта, а не его "id". Я использую версию Pygtk-2.24.
См. Этот Python GTK + имя виджета вопрос для той же проблемы.
Обратите внимание, что эта ошибка в некотором роде объясняет проблему: я хочу, чтобы идентификатор компоновщика был из дерева виджетов GTK. К сожалению, это кажется невозможным получить ...