今日も見に来てくださって、ありがとうございます。石川さんです。
今日は、Treeviewについて調べてプログラミングしてみました。Treeviewには二種類の見せ方があって、headings
とtree
です。それぞれ上下に実装してみました。
できあがりイメージ
ソースコード
import tkinter as tk import tkinter.ttk as ttk class Application(tk.Tk): def __init__(self): super().__init__() self.title("ttk Treeview Widget example headings/tree") lf1 = tk.LabelFrame(self, text="headings") lf1.grid(row=0,column=0, padx=10,pady=10) headings = {"#1":"名前", "#2":"型", "#3":"サイズ"} self.treeview = ttk.Treeview(lf1, columns=headings.keys(), show="headings") self.treeview.pack(side=tk.LEFT, fill=tk.BOTH, expand=True,padx=10,pady=10) self.scroll = ttk.Scrollbar(lf1, command=self.treeview.yview) self.treeview.configure(yscroll=self.scroll.set) self.scroll.pack(side=tk.LEFT, fill=tk.BOTH, pady=10) for key, item in headings.items(): self.treeview.heading(key, text=item) self.treeview.column("#1", width=500) self.treeview.insert("",tk.END, values=("head_information","dict","3")) self.treeview.insert("", tk.END, values=("tooltip_text","str","1")) lf2 = tk.LabelFrame(self, text="tree") lf2.grid(row=1,column=0, stick=tk.W, padx=10, pady=10) style = ttk.Style(lf2) style.configure('Treeview', rowheight=30) self.treeview2 = ttk.Treeview(lf2, show="tree") self.treeview2.heading("#0", text="tree view version", anchor=tk.W) self.treeview2.pack(padx=10, pady=10) parent1 = self.treeview2.insert("", tk.END,text="head_information") self.treeview2.insert(parent1, tk.END, text="dict") self.treeview2.insert(parent1, tk.END, text="3") parent2 = self.treeview2.insert("", tk.END, text="tooltip_text") self.treeview2.insert(parent2, tk.END, text="str") self.treeview2.insert(parent2, tk.END, text="1") if __name__ == "__main__": application = Application() application.mainloop()
詳細説明
9行目と26行目でLabelFrame()
を作成しています。それぞれheadings
用と、tree
用に準備しました。12行目でshow="headings"
オプションをつけたTreeview
を作成しています。columns
オプションでカラムを指定しています。
19行目のheadings()メソッドで、項目のヘッダ部分のテキストを設定しています。21行目でヘッダ項目の幅をセットしています。
headings
を指定することで、このような表形式でデータを扱うことができます。
30行目で、show="tree"
オプションを付けたTreeview
を作成しています。フォルダ階層などのツリー形式のデータを表現することができます。
まとめ
headings
オプションを使ったTreeview
は、データベーステーブルからデータを取得して一覧を作成するときなどに、使えそうですね。tree
オプションの方は、フォルダ階層以外にもプログラム構成や、組織構造など、幅広く使えそうです。