Я пишу приложение на Python 2.7 с использованием PyGTK 2. В основном я создаю виджет TreeView, заполняю его содержимым, а затем проверяю, изменился ли выбор. Когда это правда, я хочу, чтобы выбор был напечатан в поле TextView. Моя идея состоит в том, чтобы получить выбранное значение, обновить текст и обновить виджет. Вот как я получаю выбранное значение:
Определение:
class SomeClass:
def __init__(self):
...
someTextView = build_textview("some text")
...
tree_selection = someTreeView.get_child().get_selection()
tree_selection.connect("changed", self.selection_changed())
...
# Signal handler:
def selection_changed(self, widget, data=None):
(model, pathlist) = widget.get_selected_rows()
for path in pathlist :
tree_iter = model.get_iter(path)
value = model.get_value(tree_iter,0)
return value
Как видите, обработчик selection_changed возвращает значение. Вопрос в том, как я могу сохранить это значение после вызова обработчика? Я знаю, что могу использовать глобальную переменную или атрибут класса, но это не вариант. Я хочу, чтобы код выглядел аккуратно. то есть так:
tree_selection.connect("changed", value=self.selection_changed())
но, конечно, это не работает.