2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?