import tkinter as tk
import random
import threading
import time

class RandomRollCall:
    def __init__(self, root):
        self.root = root
        self.root.title("随机点名器")
        self.root.geometry("600x400")
        self.root.resizable(False, False)

        # 名单，自行修改这里的名字
        self.name_list = [
            "张三", "李四", "王五", "赵六",
            "小明", "小红", "小华", "小李",
            "小张", "小陈", "小周", "小吴"
        ]
        self.is_running = False
        self.current_name = tk.StringVar(value="点击开始点名")

        # 界面布局
        label_title = tk.Label(root, text="随机点名器", font=("微软雅黑", 24, "bold"))
        label_title.pack(pady=20)

        # 名字显示区域
        self.label_name = tk.Label(
            root,
            textvariable=self.current_name,
            font=("微软雅黑", 40, "bold"),
            fg="#e74c3c"
        )
        self.label_name.pack(pady=30)

        # 按钮容器
        frame_btn = tk.Frame(root)
        frame_btn.pack(pady=20)

        self.btn_start = tk.Button(
            frame_btn,
            text="开始",
            font=("微软雅黑", 16),
            width=8,
            command=self.start_roll
        )
        self.btn_start.grid(row=0, column=0, padx=15)

        self.btn_stop = tk.Button(
            frame_btn,
            text="停止",
            font=("微软雅黑", 16),
            width=8,
            command=self.stop_roll,
            state=tk.DISABLED
        )
        self.btn_stop.grid(row=0, column=1, padx=15)

    def roll_loop(self):
        """滚动名字子线程"""
        while self.is_running:
            name = random.choice(self.name_list)
            self.current_name.set(name)
            time.sleep(0.08)

    def start_roll(self):
        if not self.is_running:
            self.is_running = True
            self.btn_start.config(state=tk.DISABLED)
            self.btn_stop.config(state=tk.NORMAL)
            # 开启线程防止界面卡死
            t = threading.Thread(target=self.roll_loop, daemon=True)
            t.start()

    def stop_roll(self):
        self.is_running = False
        self.btn_start.config(state=tk.NORMAL)
        self.btn_stop.config(state=tk.DISABLED)

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