import tkinter as tk
from tkinter import ttk

# ====================== 可自行修改课程区域 ======================
# 行：周一、周二、周三、周四、周五、周六、周日
# 列：第1节~第8节
course_data = [
    ["语文", "数学", "英语", "物理", "化学", "体育", "自习", "班会"],
    ["数学", "英语", "生物", "语文", "历史", "地理", "音乐", "自习"],
    ["英语", "语文", "数学", "美术", "政治", "物理", "自习", "社团"],
    ["化学", "历史", "语文", "数学", "英语", "生物", "体育", "自习"],
    ["地理", "政治", "英语", "物理", "数学", "语文", "大扫除", "放学"],
    ["无", "无", "无", "无", "无", "无", "无", "无"],
    ["无", "无", "无", "无", "无", "无", "无", "无"]
]
# 星期表头
week_list = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
# 课时编号+上课时间
period_info = [
    ("第1节", "08:00-08:45"),
    ("第2节", "08:55-09:40"),
    ("第3节", "10:00-10:45"),
    ("第4节", "10:55-11:40"),
    ("第5节", "14:00-14:45"),
    ("第6节", "14:55-15:40"),
    ("第7节", "16:00-16:45"),
    ("第8节", "16:55-17:40")
]
# =============================================================

# 创建主窗口
root = tk.Tk()
root.title("可视化课程表")
root.geometry("950x400")  # 窗口宽高
root.resizable(True, True)  # 允许拖拽缩放窗口

# 标题标签
title_label = tk.Label(root, text="一周课程表", font=("微软雅黑", 18, "bold"), pady=15)
title_label.pack()

# 创建表格
table = ttk.Treeview(root, columns=week_list, show="tree headings")

# 配置星期表头样式
for week_name in week_list:
    table.heading(week_name, text=week_name)
    table.column(week_name, width=110, anchor="center")

# 配置第一列（课时+时间）
table.column("#0", width=110, anchor="center")

# 填入每一行课程
for index, (period_name, time_range) in enumerate(period_info):
    # 取出当天所有星期对应这一节的课程
    row_course = [course_data[w][index] for w in range(7)]
    table.insert(
        parent="",
        index=tk.END,
        text=f"{period_name}\n{time_range}",
        values=row_course
    )

# 表格铺满窗口
table.pack(fill=tk.BOTH, expand=True, padx=15, pady=5)

# 底部说明
tip_label = tk.Label(root, text="提示：修改代码内 course_data 即可更换你的课程", font=("微软雅黑", 9), fg="#666666")
tip_label.pack(pady=8)

root.mainloop()