目的
ttk.Treeview
を使って CSV を表形式で表示します。
コード
import tkinter as tk
from tkinter import ttk
import csv
class CSVViewerApp(tk.Tk):
def __init__(self, path):
super().__init__()
self.title("CSV Viewer")
self.geometry("800x600")
vscroll = ttk.Scrollbar(self, orient="vertical")
vscroll.pack(side=tk.RIGHT, fill=tk.Y)
self.tree = ttk.Treeview(self, columns=(), show="headings", yscrollcommand=vscroll.set)
self.tree.pack(fill=tk.BOTH, expand=True)
vscroll.config(command=self.tree.yview)
self.load_csv(path)
def load_csv(self, path):
with open(path, newline="", encoding="utf-8") as f:
reader = csv.reader(f)
rows = list(reader)
headers = rows[0]
data = rows[1:]
self.tree["columns"] = headers
for h in headers:
self.tree.heading(h, text=h)
self.tree.column(h, width=100, anchor="w")
for row in data:
self.tree.insert("", "end", values=row)
if __name__ == "__main__":
app = CSVViewerApp("sample.csv") # 実在するCSVに差し替え
app.mainloop()
解説
Treeview
は表をつくるウィジェットyscrollcommand
とScrollbar
を相互接続でスクロール可能にinsert()
で行データを追加
前へ → 第1章
次へ → 第3章:行番号をつける