質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

5549閲覧

python3 treeview クリックした行の値を取得したい。

segarenjr

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2019/02/26 11:21

こんにちは

下記のコードの様に、Selectボタンでttk.treeviewに複数のリストを順番に並べ、さらに表示された中から任意の1行を選択しGetのボタンでその値を取得をしたいのですが、公式ドキュメントを読んでもレベル足らずで理解が追い付きません。
下記のコードの場合ですと、例えば3行目を選択したら 3, 300, ccc という具合に取得したいという感じです。
def getVlue():の中がどうにも思い浮かばない状況です。

web上にもtreeviewの情報は少なく困っております。
初心者の様な質問ですがご教授よろしくお願いします。

python3

1import tkinter as tk 2import tkinter.ttk as ttk 3 4lay01 = [1,2,3,4,5] 5lay02 = [100,200,300,400,500] 6lay03 = ["aaa","bbb","ccc","ddd"] 7 8def treelins(): 9 i = 0 10 for loop in zip(lay01,lay02,lay03): 11 tree.insert("","end",tags=i,values=(loop)) 12 if i & 1: 13 tree.tag_configure(i,background="#CCFFFF") 14 i+=1 15 16def getVule(): 17 ????????????????????? 18 19 20root = tk.Tk() 21root.title("TreeView")# {}".format(ver)) 22root.geometry("600x450") 23 24button01 = tk.Button(root,text="select",command=lambda:treelins()) 25button01.pack() 26button02 = tk.Button(root,text="Get",command=lambda:getVule()) 27button02.pack() 28 29 30tree = ttk.Treeview(root,selectmode="browse",height=10) 31 32scroll = ttk.Scrollbar(root, orient="vertical",command=tree.yview) 33scroll.pack(side="right",fill="y") 34 35tree.configure(yscrollcommand=scroll.set) 36 37tree["columns"]=(1,2,3) 38tree["show"]="headings" 39 40tree.column(1,width=30) 41tree.column(2,width=30) 42tree.column(3,width=80) 43tree.heading(1,text="Time") 44tree.heading(2,text="Temp.") 45tree.heading(3,text="Resistance") 46 47tree.pack(fill="both",expand=False) 48 49root.mainloop() 50

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Treeview.selection() にて選択されているItemのリストを取得し、Treeview.item()にてその値を取得するとよいかと思います。

Python

1def getVule(): 2 selected_items = tree.selection() 3 if not selected_items: 4 # Itemが選択されていない・・・ 5 return 6 # SelectModeがBrowseなので、複数選択を考慮しない 7 values = tree.item(selected_items[0])['values'] 8 print(values)

投稿2019/02/26 12:11

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

segarenjr

2019/02/26 12:53

magichan ありがとうございます! 思い通りの値の取得が出来るようになりました! ここで追加の質問はふさわしくないとは思うのですが、、、 values = tree.item(selected_items[0])['values'] 上記の['values']のような記述はどのようなところから勉強すれば知ることが出来るのでしょうか? 上級者のみなさまの回答を見ていると、"入門xxx"的な情報源では見られない表現が多く戸惑うことばかりです。
magichan

2019/02/26 14:28

まず最初にちょっと修正です。 values = tree.item(selected_items[0])['values'] の箇所は values = tree.item(selected_items[0], 'values') の方が良いかもしれません。
magichan

2019/02/26 14:30

で、 ['values']のような記述はどのように・・・の件ですが やはり ・ "入門xxx"にかかれている基本的な文法をおさえる ・ 公式のドキュメントを確認する ・ 実際に動作させてみる の3つが基本になるかと思います。 今回の場合は、 Treeview.item() の戻り値を print(tree.item(selected_items[0])) にて確認してみると {'text': '', 'image': '', 'values': [4, 400, 'ddd'], 'open': 0, 'tags': [3]} となってましたので、戻り値は dict型で Keyが 'values' でデータが得られるのがわかりますので、あとは values = tree.item(selected_items[0]))['values'] とするとデータが取得できるのがわかるかと思います。 ところが https://docs.python.org/ja/3/library/tkinter.ttk.html?highlight=treeview#tkinter.ttk.Treeview.item のドキュメントをもう一度見なおしてみたところ Treeview.item() の引数として Opthinを指定できるようでしたので、 values = tree.item(selected_items[0], 'values') のほうが良いということになりした。
segarenjr

2019/02/26 16:42

magichanさん 私はまだ基本的な勉強も足りていないないということですね… 地道にですが精進します 丁寧にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問