import tkinter as tk
from tkinter import messagebox

class VoteSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("模拟投票调查系统")
        self.root.geometry("480x420")

        # 投票数据，可以自行修改选项
        self.options = {
            "选项A": 0,
            "选项B": 0,
            "选项C": 0,
            "选项D": 0
        }
        self.voted = False  # 标记是否已经投票

        # 界面组件
        title_label = tk.Label(root, text="模拟投票调查", font=("微软雅黑", 16, "bold"))
        title_label.pack(pady=12)

        self.var = tk.StringVar(value="")
        self.radios = []
        for text in self.options.keys():
            rb = tk.Radiobutton(
                root, text=text, variable=self.var, value=text,
                font=("微软雅黑", 12), command=self.update_select
            )
            rb.pack(anchor="w", padx=80, pady=4)
            self.radios.append(rb)

        # 按钮区域
        frame_btn = tk.Frame(root)
        frame_btn.pack(pady=15)

        self.vote_btn = tk.Button(frame_btn, text="提交投票", width=10,
                                  command=self.do_vote, bg="#3498db", fg="white", font=("微软雅黑",11))
        self.vote_btn.grid(row=0, column=0, padx=8)

        self.result_btn = tk.Button(frame_btn, text="查看结果", width=10,
                                    command=self.show_result, bg="#27ae60", fg="white", font=("微软雅黑",11))
        self.result_btn.grid(row=0, column=1, padx=8)

        self.reset_btn = tk.Button(frame_btn, text="重置投票", width=10,
                                   command=self.reset_vote, bg="#e74c3c", fg="white", font=("微软雅黑",11))
        self.reset_btn.grid(row=0, column=2, padx=8)

        # 提示文字
        self.tip_label = tk.Label(root, text="请选择一个选项进行投票", font=("微软雅黑",10), fg="#555555")
        self.tip_label.pack(pady=8)

    def update_select(self):
        """选中选项时更新提示"""
        if self.var.get():
            self.tip_label.config(text=f"已选择：{self.var.get()}")

    def do_vote(self):
        """执行投票"""
        select = self.var.get()
        if not select:
            messagebox.showwarning("提示", "请先选择投票选项！")
            return
        if self.voted:
            messagebox.showerror("提示", "你已经投过票，不能重复投票！")
            return

        self.options[select] += 1
        self.voted = True
        messagebox.showinfo("成功", f"投票完成！你选择了：{select}")
        self.vote_btn.config(state="disabled")

    def show_result(self):
        """展示投票统计结果"""
        total = sum(self.options.values())
        msg = "===== 投票统计结果 =====\n"
        for name, count in self.options.items():
            if total == 0:
                percent = 0.0
            else:
                percent = count / total * 100
            msg += f"{name}：{count}票  {percent:.1f}%\n"
        msg += f"\n总投票人数：{total}"
        messagebox.showinfo("投票结果", msg)

    def reset_vote(self):
        """重置所有投票数据"""
        confirm = messagebox.askyesno("确认", "确定要清空所有投票记录吗？此操作不可恢复！")
        if confirm:
            for k in self.options:
                self.options[k] = 0
            self.voted = False
            self.var.set("")
            self.vote_btn.config(state="normal")
            self.tip_label.config(text="请选择一个选项进行投票")
            messagebox.showinfo("完成", "投票数据已全部重置")


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