やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonのtkinter.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

f:id:ytyaru:20191003133110p:plain

問題

f:id:ytyaru:20191003133117p:plain

  • ソートできない
  • 絞込できない
  • セル編集できない(型やバリデートに応じて)
  • データバインディングできない(例えばSQLite3の表と)
  • 名前がわかりづらい
    • Treeviewという名前だがデータ構造的にTable/Gridとすべき
    • メソッドも木構造と併用するためかわかりにくい&使いにくい(insert()など)

 問題だらけ。これはひどい表計算ソフトみたいなのが欲しいのだが。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux