You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现CSV周列数据在Tkinter Treeview中按当日自动展示

实现Tkinter Treeview自动匹配当日展示CSV对应列数据

核心思路

  • 获取当前星期几,映射到CSV对应的列名
  • 读取CSV文件,提取目标列的数据
  • 将数据插入到Treeview的单列中展示

代码实现(基础版,使用csv模块)

from datetime import datetime
import tkinter as tk
from tkinter import ttk
import csv

# 1. 获取当日对应的CSV列名
today_weekday = datetime.today().weekday()  # 0=周一,6=周日
# 请确保此处列名与CSV文件的表头完全一致
csv_columns = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
target_col = csv_columns[today_weekday]

# 2. 读取CSV并提取目标列数据
target_data = []
try:
    with open("your_data.csv", "r", encoding="utf-8") as csv_file:
        csv_reader = csv.DictReader(csv_file)
        # 校验目标列是否存在
        if target_col not in csv_reader.fieldnames:
            raise ValueError(f"CSV文件中未找到列:{target_col}")
        # 逐行提取数据
        for row in csv_reader:
            target_data.append(row[target_col])
except FileNotFoundError:
    print("错误:指定的CSV文件不存在,请检查路径")
except ValueError as e:
    print(e)

# 3. 创建Tkinter界面与Treeview
root = tk.Tk()
root.title(f"{target_col}数据展示")

# 初始化Treeview,仅保留一个展示列
tree = ttk.Treeview(root, columns=("data",), show="headings")
tree.heading("data", text=target_col)
tree.column("data", width=300, anchor="center")

# 插入数据到Treeview
for item in target_data:
    tree.insert("", tk.END, values=(item,))

tree.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

root.mainloop()

代码实现(简化版,使用pandas)

如果已经安装了pandas,代码会更简洁:

from datetime import datetime
import tkinter as tk
from tkinter import ttk
import pandas as pd

# 获取当日列名
today_weekday = datetime.today().weekday()
csv_columns = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
target_col = csv_columns[today_weekday]

# 读取CSV并提取数据
try:
    df = pd.read_csv("your_data.csv", encoding="utf-8")
    if target_col not in df.columns:
        raise ValueError(f"CSV文件中未找到列:{target_col}")
    target_data = df[target_col].tolist()
except FileNotFoundError:
    print("错误:指定的CSV文件不存在")
except ValueError as e:
    print(e)

# 创建界面
root = tk.Tk()
root.title(f"{target_col}数据展示")

tree = ttk.Treeview(root, columns=("data",), show="headings")
tree.heading("data", text=target_col)
tree.column("data", width=300, anchor="center")

for item in target_data:
    tree.insert("", tk.END, values=(item,))

tree.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

root.mainloop()

关键注意事项

  • 替换代码中的your_data.csv为实际的CSV文件路径
  • 确保csv_columns列表中的列名与CSV表头完全一致(包括汉字、大小写、空格)
  • 如果需要每日自动刷新数据,可以添加定时器逻辑,例如使用root.after(86400000, refresh_function)(86400000毫秒=24小时),在refresh_function中重新获取日期、读取数据并更新Treeview

内容的提问来源于stack exchange,提问作者user19851007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:40:32