import tkinter as tk
from tkinter import ttk, messagebox
from tkinter import Scrollbar

# 主窗口初始化
root = tk.Tk()
root.title("游玩计划管理工具")
root.geometry("700x500")  # 窗口大小
root.resizable(False, False)

# 定义列表存储所有游玩计划
plan_list = []

# ====================== 顶部：添加计划区域 ======================
frame_add = tk.LabelFrame(root, text="添加新游玩计划", padx=10, pady=10)
frame_add.pack(fill="x", padx=15, pady=5)

# 日期
tk.Label(frame_add, text="日期：").grid(row=0, column=0, sticky="w")
entry_date = tk.Entry(frame_add, width=15)
entry_date.grid(row=0, column=1, padx=5)
entry_date.insert(0, "2025-01-01")

# 地点
tk.Label(frame_add, text="地点：").grid(row=0, column=2, sticky="w")
entry_place = tk.Entry(frame_add, width=15)
entry_place.grid(row=0, column=3, padx=5)

# 交通方式
tk.Label(frame_add, text="交通：").grid(row=0, column=4, sticky="w")
entry_transport = tk.Entry(frame_add, width=15)
entry_transport.grid(row=0, column=5, padx=5)
entry_transport.insert(0, "地铁/自驾")

# 备注
tk.Label(frame_add, text="备注：").grid(row=1, column=0, sticky="w", pady=5)
entry_note = tk.Entry(frame_add, width=50)
entry_note.grid(row=1, column=1, columnspan=5, padx=5, pady=5)

# 添加按钮
def add_plan():
    date = entry_date.get().strip()
    place = entry_place.get().strip()
    transport = entry_transport.get().strip()
    note = entry_note.get().strip()

    if not date or not place:
        messagebox.showwarning("提示", "日期和地点不能为空！")
        return

    # 加入列表
    plan = [date, place, transport, note]
    plan_list.append(plan)
    update_table()  # 刷新表格

    # 清空输入框
    entry_date.delete(0, tk.END)
    entry_place.delete(0, tk.END)
    entry_transport.delete(0, tk.END)
    entry_note.delete(0, tk.END)
    messagebox.showinfo("成功", "游玩计划已添加！")

btn_add = tk.Button(frame_add, text="添加计划", width=12, bg="#4CAF50", fg="white", command=add_plan)
btn_add.grid(row=2, column=0, columnspan=6, pady=5)

# ====================== 中间：计划展示表格 ======================
frame_table = tk.LabelFrame(root, text="我的游玩计划", padx=10, pady=10)
frame_table.pack(fill="both", expand=True, padx=15, pady=5)

# 表格列
columns = ("日期", "地点", "交通方式", "备注")
tree = ttk.Treeview(frame_table, columns=columns, show="headings")

# 设置表头
for col in columns:
    tree.heading(col, text=col)
    tree.column(col, width=150, anchor="center")

# 滚动条
scrollbar = Scrollbar(frame_table, orient=tk.VERTICAL, command=tree.yview)
tree.configure(yscrollcommand=scrollbar.set)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
tree.pack(fill="both", expand=True)

# 刷新表格
def update_table():
    # 清空现有内容
    for item in tree.get_children():
        tree.delete(item)
    # 插入所有计划
    for plan in plan_list:
        tree.insert("", tk.END, values=plan)

# ====================== 底部：删除功能 ======================
frame_btn = tk.Frame(root)
frame_btn.pack(pady=5)

def delete_plan():
    selected = tree.selection()
    if not selected:
        messagebox.showwarning("提示", "请先选择要删除的计划！")
        return
    # 删除选中项
    for item in selected:
        index = tree.index(item)
        del plan_list[index]
    update_table()
    messagebox.showinfo("成功", "已删除选中计划！")

btn_delete = tk.Button(frame_btn, text="删除选中计划", width=15, bg="#f44336", fg="white", command=delete_plan)
btn_delete.pack(side=tk.LEFT, padx=10)

# 清空所有
def clear_all():
    global plan_list
    if messagebox.askyesno("确认", "确定要清空所有计划吗？"):
        plan_list = []
        update_table()

btn_clear = tk.Button(frame_btn, text="清空所有计划", width=15, bg="#ff9800", fg="white", command=clear_all)
btn_clear.pack(side=tk.LEFT, padx=10)

# 启动主循环
root.mainloop()