LoginSignup
2
2

More than 1 year has passed since last update.

残プロ 第-14回 ~pythonでcsvをgui表示~

Last updated at Posted at 2021-06-15

今回すること

  • csvを読込,gui表示
  • pyhtonに標準で入っているtkinterモジュールを利用
  • 表の作成にはttk.treeviewを使用する

.py

tkinterの流れとしては,

  • ガワ(ウィンドウやフレーム)をつくる
  • 中身(ラベルやボタン)をつくる
  • 配置

となります.もちろん配置した後から中身をつくることもできます
ガワと中身は作っておいて配置せず,任意のタイミング(ボタン押下等)で表示するといったことができます.今回はやってませんが...

以下,サンプルプログラムになります.

import tkinter as tk
import tkinter.ttk as ttk
import pandas as pd

def selected(event):
    for item in tree.selection():
        print(item, tree.item(item))


def main():
    # Load .csv
    df = pd.read_csv("tasks.csv", encoding='shift-jis')
    # create Window and Treeview
    root = tk.Tk()
    tree = ttk.Treeview(root, show='headings')
    # set Treeview columns
    tree['column'] = ("No",) + tuple(df)
    # set header
    tree.heading("No", text="No")
    for c in df:
        tree.heading(c, text=c)
    # set cells on the row
    for i, row in enumerate(df.itertuples()):
        tree.insert("", "end", tags=i, values=row)
    # set layout
    tree.pack()
    # bind action
    tree.bind('<<TreeviewSelect>>', selected)
    # set loop
    root.mainloop()


if __name__ == '__main__':
    main()

実行結果

各行にselected関数をbindメソッドによって紐づけています.内容はクリックされた行のitemを表示するものです.今回の例ではvaluesに要素の配列が格納されていることが分かりますね!
選択された行のvaluesを操作すればgui上で表示の変更が,tagsを利用すれば.csvの編集ができそうです.

csv_gui.png

terminal
I006 {'text': '', 'image': '', 'values': [5, 'ペットボトル,缶', '2021年06月22日', '8:00:00', 'SecondTuesday,FourthTuesday', 'nan'], 'open': 0, 'tags': [5]}
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2