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

# 主窗口
root = tk.Tk()
root.title("学生证生成器")
root.geometry("500x450")
root.resizable(False, False)

# 输入变量
name = tk.StringVar()
stu_id = tk.StringVar()
cls = tk.StringVar()
school = tk.StringVar()

# 生成学生证文本并保存
def generate():
    # 获取信息
    s_name = name.get().strip()
    s_id = stu_id.get().strip()
    s_cls = cls.get().strip()
    s_school = school.get().strip()

    if not s_name or not s_id or not s_cls or not s_school:
        messagebox.showerror("错误", "请把信息填写完整！")
        return

    # 学生证内容
    content = f"""
    ==============================
               学 生 证
    ==============================

    学校：{s_school}

    姓名：{s_name}

    学号：{s_id}

    班级：{s_cls}

    ==============================
    """

    # 保存为文本文件
    path = filedialog.asksaveasfilename(
        defaultextension=".txt",
        filetypes=[("文本文件", "*.txt")],
        title="保存学生证"
    )

    if path:
        with open(path, "w", encoding="utf-8") as f:
            f.write(content)
        messagebox.showinfo("成功", "学生证已生成！")

# 清空
def clear():
    name.set("")
    stu_id.set("")
    cls.set("")
    school.set("")

# 界面
tk.Label(root, text="学生证生成器", font=("微软雅黑", 20, "bold")).pack(pady=20)

frame = ttk.Frame(root)
frame.pack(pady=10)

ttk.Label(frame, text="学校：", font=("微软雅黑",12)).grid(row=0, column=0, padx=5, pady=10)
ttk.Entry(frame, textvariable=school, font=("微软雅黑",12), width=25).grid(row=0, column=1)

ttk.Label(frame, text="姓名：", font=("微软雅黑",12)).grid(row=1, column=0, padx=5, pady=10)
ttk.Entry(frame, textvariable=name, font=("微软雅黑",12), width=25).grid(row=1, column=1)

# 这里已经修复！删除了重复的 padx
ttk.Label(frame, text="学号：", font=("微软雅黑",12)).grid(row=2, column=0, padx=5, pady=10)
ttk.Entry(frame, textvariable=stu_id, font=("微软雅黑",12), width=25).grid(row=2, column=1)

ttk.Label(frame, text="班级：", font=("微软雅黑",12)).grid(row=3, column=0, padx=5, pady=10)
ttk.Entry(frame, textvariable=cls, font=("微软雅黑",12), width=25).grid(row=3, column=1)

# 按钮
btn_frame = ttk.Frame(root)
btn_frame.pack(pady=30)
ttk.Button(btn_frame, text="生成学生证", command=generate, width=15).grid(row=0, column=0, padx=10)
ttk.Button(btn_frame, text="清空", command=clear, width=15).grid(row=0, column=1, padx=10)

root.mainloop()