import tkinter as tk
from tkinter import ttk, scrolledtext
import random

class RandomRollCall:
    def __init__(self, root):
        self.root = root
        self.root.title("随机点名抽签器")
        self.root.geometry("550x420")
        self.root.resizable(False, False)

        # 存储全部名单
        self.name_list = []
        self.is_running = False

        # 左侧：名单输入区
        frame_left = tk.Frame(root)
        frame_left.place(x=20, y=20, width=240, height=320)

        tk.Label(frame_left, text="名单区域（一行一个名字）", font=("微软雅黑", 11)).pack()
        self.text_name = scrolledtext.ScrolledText(frame_left, width=28, height=15)
        self.text_name.pack(pady=5)

        # 右侧：显示+按钮
        frame_right = tk.Frame(root)
        frame_right.place(x=290, y=20, width=230, height=320)

        tk.Label(frame_right, text="当前抽取", font=("微软雅黑", 11)).pack()
        # 超大文字展示名字
        self.label_show = tk.Label(
            frame_right, text="等待抽取",
            font=("微软雅黑", 30, "bold"), fg="#d62828",
            width=8, height=3, bg="#f8f9fa"
        )
        self.label_show.pack(pady=10)

        # 按钮容器
        btn_frame = tk.Frame(frame_right)
        btn_frame.pack()

        self.btn_start = tk.Button(btn_frame, text="开始滚动", command=self.toggle_run,
                                   font=("微软雅黑", 10), bg="#0077b6", fg="white", width=8)
        self.btn_start.grid(row=0, column=0, padx=4)

        self.btn_reset = tk.Button(btn_frame, text="重置", command=self.reset_all,
                                   font=("微软雅黑", 10), bg="#6c757d", fg="white", width=6)
        self.btn_reset.grid(row=0, column=1, padx=4)

        self.btn_clear = tk.Button(frame_right, text="清空名单", command=self.clear_text,
                                   font=("微软雅黑", 10), bg="#e63946", fg="white", width=12)
        self.btn_clear.pack(pady=8)

    def load_names(self):
        # 读取文本框所有名字，去除空行
        content = self.text_name.get("1.0", tk.END)
        lines = content.strip().splitlines()
        self.name_list = [name.strip() for name in lines if name.strip()]

    def toggle_run(self):
        self.load_names()
        if len(self.name_list) == 0:
            self.label_show.config(text="请填写名单！")
            return

        if not self.is_running:
            # 开始滚动
            self.is_running = True
            self.btn_start.config(text="停止抽取", bg="#e63946")
            self.rolling()
        else:
            # 停止
            self.is_running = False
            self.btn_start.config(text="开始滚动", bg="#0077b6")

    def rolling(self):
        if not self.is_running:
            return
        # 随机刷新名字
        random_name = random.choice(self.name_list)
        self.label_show.config(text=random_name)
        # 循环刷新
        self.root.after(60, self.rolling)

    def reset_all(self):
        # 停止滚动，恢复初始状态
        self.is_running = False
        self.btn_start.config(text="开始滚动", bg="#0077b6")
        self.label_show.config(text="等待抽取")

    def clear_text(self):
        # 清空名单输入框
        self.text_name.delete("1.0", tk.END)
        self.reset_all()

if __name__ == "__main__":
    main_win = tk.Tk()
    app = RandomRollCall(main_win)
    main_win.mainloop()