【スポンサーリンク】
Treeviewの概要
Treeviewを使用すると、階層構造を持つアイテムをツリー表示することができる。以下、親要素parent
の下に、子要素child
を表示させる場合の例を示す。
import tkinter from tkinter import ttk root = tkinter.Tk() #Treeview tree = ttk.Treeview(root) #親要素の挿入 parent = tree.insert( "", #最上位は空文字 "end", #挿入位置 text="parent" #表示する文字列 ) #子要素の挿入 child = tree.insert( parent, #親要素を指定 "end", #挿入位置 text="child" #表示する文字列 ) tree.pack() root.mainloop()
Treeviewに要素を追加する際は、insertメソッドを使用する。inserメソッドの一つ目の引数を空文字にすると最上位の親要素となり、親要素にするとその子要素が設定される。
【スポンサーリンク】
辞書型アイテムの階層表示
次に、階層構造を持つ辞書型のアイテムを階層表示させる例を示す。
import tkinter from tkinter import ttk root = tkinter.Tk() #階層構造を持つ辞書型アイテム menu = { "Food":["Hamburger", "Beef steak", "Salad"], "Softdrink":["Coke", "Cider", "Tea"], "Alcohol":["Beer", "Wine", "Cocktail"], } #Treeview tree = ttk.Treeview(root) #辞書型アイテムの挿入 for p in menu: #キーを親要素に設定 parent = tree.insert( "", "end", text=p, ) for m in menu[p]: #要素を子要素に設定 child = tree.insert( parent, "end", text=m, ) tree.pack() root.mainloop()
for文を用いて辞書型アイテムのそれぞれのキーを親要素に、その要素を子要素に設定している。
ファイル・フォルダ名をリスト化して表示
ファイル・フォルダ名をリスト化して表示する例を示す。
import tkinter from tkinter import ttk import os #ファイル・フォルダ名を取得してinsertする関数 def process_directory(parent, path): for p in os.listdir(path): abspath = os.path.join(path, p) child = tree.insert( parent, "end", text=p, ) if os.path.isdir(abspath): #子要素がある場合は再帰呼び出し process_directory(child, abspath) root = tkinter.Tk() #Treeview tree = ttk.Treeview(root) process_directory("", os.getcwd()) tree.pack() root.mainloop()
process_directory関数内で、フォルダ・ファイル名の取得及びTreeviewへのinsertを行い、子要素がある場合は再帰呼び出しを行ってその子要素のinsertを実行している。
【スポンサーリンク】