Python tkinter GUI プログラミング DataFrameを表示

 今日も見に来てくださって、ありがとうございます。石川さんです。

 ここのところ、データサイエンス入門の勉強中です。データサイエンスで利用されるライブラリの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って、すごいですねぇ♪

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。