Pythonのtkinter.ttk.Treeviewでグリッド(テーブル)表示
リサイズが残念。
成果物
情報源
- http://memopy.hatenadiary.jp/entry/2017/06/02/230723
- https://docs.python.org/ja/3/library/tkinter.ttk.html#ttk-treeview
コード
grid.py
#!/usr/bin/env python3 # coding: utf-8 import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() tree = ttk.Treeview(root) tree["columns"] = (1,2,3) tree["show"] = "headings" #tree.column(1,width=75) #tree.column(2,width=75) #tree.column(3,width=100) tree.column(1) tree.column(2) tree.column(3) tree.heading(1,text="識別子") tree.heading(2,text="名前") tree.heading(3,text="生年月日") tree.grid(sticky="SNEW") # これがあってもリサイズ対応してくれない tree.insert("","end",values=(1,"山田太郎","1950-01-01")) tree.insert("","end",values=(2,"鈴木二郎","1960-02-02")) tree.insert("","end",values=(3,"川村三郎","1970-03-03")) tree.pack() root.mainloop()
実行結果
./grid.py
問題
- リサイズしたとき自動調整してくれない
- ソートできない
- 絞込できない
- セル編集できない(型やバリデートに応じて)
- データバインディングできない(例えばSQLite3の表と)
- 名前がわかりづらい
Treeview
という名前だがデータ構造的にTable
/Grid
とすべき- メソッドも木構造と併用するためかわかりにくい&使いにくい(
insert()
など)
問題だらけ。これはひどい。表計算ソフトみたいなのが欲しいのだが。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- Python 3.5.3
- tkinter 8.6
- SQLite 3.29.0 ※
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux