【Tkinter】Treeviewで選択された行を取得する方法

Treeviewで選択された行の内容を取得するにはどうすれば良いか。

Macではツリービューの特定の行を選択すると、上記のように青くなる。

Commandを押しながら選択すると複数の行を選択できる。

ユーザが選択した行の値を取得するにはどうすれば良いのだろうか。

このサイトで有志が良いサンプルコードを紹介してくれていた。

import tkinter as tk
from tkinter import ttk

class App:
    def __init__(self):
        self.root = tk.Tk()
        self.tree = ttk.Treeview()
        self.tree.pack(side="top", fill="both")
        self.tree.bind("<<TreeviewSelect>>", self.on_tree_select)

        for i in range(10):
            self.tree.insert("", "end", text="Item %s" % i)

        self.root.mainloop()

    def on_tree_select(self, event):
        print("selected items:")
        for item in self.tree.selection():
            item_text = self.tree.item(item,"text")
            print(item_text)

if __name__ == "__main__":
    app = App()

選択された行の内容は上記のコードのitem_textで取得できる。

行に複数のデータが入っている場合には、item_text[0]のようにカラム番号を指定することで取り出せる。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog