第2章:CSV を読み込んで表示する

python

目的

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 は表をつくるウィジェット
  • yscrollcommandScrollbar を相互接続でスクロール可能に
  • insert() で行データを追加

前へ → 第1章
次へ → 第3章:行番号をつける

タイトルとURLをコピーしました