web-dev-qa-db-ja.com

TreeViewから選択したオブジェクトを取得します

マイナー(初回)アプリですばやく作業していて、ハードルがあります-選択した行(データ)をTreeViewから取得するにはどうすればよいですか? TreeViewへのデータは、ディレクトリ内のファイルのリストから渡され、どの行が選択されたか(したがって、どのファイルが選択されたか)を知る必要があります。それを行う最良の方法は何ですか?

現在のコードは次のとおりです。

    self.treeview = self.builder.get_object("treeview")
    select = self.treeview.get_selection()
    select.connect("changed", self.on_tree_selection_changed)

def on_tree_selection_changed(selection):
    model, treeiter = self.treeview.selection-get()
    if treeiter != None:
        print "You selected", model[treeiter][0]
2
GoGoDo

こちらをご覧ください: http://python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.html

選択オブジェクトをイベントに接続することにより、イベントの選択を取得できます。

_select = tree.get_selection()
select.connect("changed", on_tree_selection_changed)
def on_tree_selection_changed(selection):
    model, treeiter = selection.get_selected()
    if treeiter != None:
        print "You selected", model[treeiter][0]
_

編集:ウィンドウクラス内でこれを設定するには、次のコードを使用します。

_class MyTreeView....
    ....Other Stuff...
        self.treeview = self.builder.get_object("treeview")
        select = self.treeview.get_selection()
        select.connect("changed", self.on_tree_selection_changed)

    def on_tree_selection_changed(self, selection):
        model, treeiter = selection.get_selected()
        if treeiter != None:
            print "You selected", model[treeiter][0]
_

Edit2:複数の行を選択したい場合、Gtk.TreeSelection.get_selected_rows()を使用する必要があります。これは、選択したすべての行の_Gtk.TreePath_インスタンスのリストを返します。

3
Ian B.