Спасибо за все предыдущие ответы, однако я считаю, что окончательное решение должно включать то, что TreeModel (с TreeStore) может хранить элементы со многими уровнями вложенности (например, путь (2,0,4,2)). Решение, опубликованное «fresh», не сработало для меня, так как мне нужна была функция, которая будет корректно проходить через всех последних детей, пока она действительно не найдет последний ряд. Ниже мое окончательное решение:
def get_last_iter (self, model):
n = model.iter_n_children (None)
# list empty
if n == 0:
return None
else:
iter = model.iter_nth_child (None, n - 1)
n = model.iter_n_children (iter)
# last top-level item has no children, so select that last item
if n == 0:
return iter
else:
# traverse thru every last child
while 1:
iter = model.iter_nth_child (iter, n - 1)
n = model.iter_n_children (iter)
if n == 0:
return iter
Или даже более короткая форма:
def get_last_iter (self, model):
iter = None
n = 0
while 1:
iter = model.iter_nth_child (iter, n - 1)
n = model.iter_n_children (iter)
if n == 0:
return iter