今日も見に来てくださって、ありがとうございます。石川さんです。
ここのところ、データサイエンス入門の勉強中です。データサイエンスで利用されるライブラリのpandasにあるDataFrameクラス、データを操作するのにいろいろな機能があって、とても便利です。ぼくは普段SQLを使っているので必要性はまったくないのですけど、Pythonでプログラミングするのに、覚えておくとよいですね。
tkinterも最近の学習テーマなので、組み合わせて、DataFrameの内容をtkinterを使って表示するにはどうしたらいいのかな、と、ちょっと作ってみました。
できあがりイメージ

ソースコード
import tkinter as tk
import numpy as np
from pandas import DataFrame
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Display DataFrame")
self.df = DataFrame(np.arange(20).reshape(4,5))
for r in range(4):
for c in range(5):
e = tk.Entry(self)
e.insert(0,self.df.iloc[r,c])
e.grid(row=r,column=c)
e.bind("<KeyPress>",lambda event, row=r, column=c: self.change(event,row,column))
def change(self,event,row,column):
value = event.widget.get()
self.df.iloc[row,column] = value
print(self.df)
if __name__ == '__main__':
app = App()
app.mainloop()
説明
まずは、10行目でDataFrameのインスタンスを作成しています。データは、numpyのarange()を使って、0から20個の要素をつくって、reshape()で4行5列に変更しています。
forループを二重にしてEntryを作成しています。作成するごとに、insert()を使ってデータをセットしています。データの取得は、iloc[r,c]を使います。gridで行と列を指定して配置します。bind()で<KeyPress>イベント、キーが押されたときにchange()メソッドを呼び出すようにバインドしています。
まとめ
表をつくって表示するだけなら、ほんの数行でできてしまいました。Pythonって、すごいですねぇ♪

