私は PyGTK 2 を使用して Python 2.7 でアプリケーションを作成しています。基本的には TreeView ウィジェットを作成し、コンテンツを入力してから、選択が変更されたかどうかを確認します。true の場合、選択範囲を 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())
しかし、もちろんうまくいきません。