用cursor+deepseek v3自动生成的UI界面的版本,感觉还不错

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

# 常见姓氏列表
surnames = [
    '王', '李', '张', '刘', '陈', '杨', '赵', '黄', '周', '吴',
    '徐', '孙', '胡', '朱', '高', '林', '何', '郭', '马', '罗'
]

# 常见名字列表(单字)
given_names = [
    '伟', '芳', '娜', '敏', '静', '秀英', '丽', '强', '磊', '军',
    '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '秀兰', '霞',
    '平', '刚', '桂英', '芳芳', '波', '秀珍', '健', '秀梅', '宁', '红梅'
]

def generate_unique_names(total_people):
    """
    生成不重复的中国人习惯的名字
    :param total_people: 总人数
    :return: 不重复的名字列表
    """
    names = set()
    while len(names) < total_people:
        surname = random.choice(surnames)
        given_name = random.choice(given_names)
        full_name = f"{surname}{given_name}"
        names.add(full_name)
    return list(names)

def assign_groups(total_people, num_groups):
    """
    将人群随机分到 N 组中,并为每个组别中的人分配抽签号
    :param total_people: 总人数
    :param num_groups: 组数
    :return: 分组结果(字典形式)
    """
    # 生成不重复的名字列表
    names = generate_unique_names(total_people)
    random.shuffle(names)  # 随机打乱顺序

    # 初始化分组
    groups = {i: [] for i in range(1, num_groups + 1)}

    # 分配人员到组中
    for index, name in enumerate(names):
        group_number = (index % num_groups) + 1
        groups[group_number].append(name)

    # 为每个组别中的人分配抽签号
    for group_number, members in groups.items():
        random.shuffle(members)  # 组内随机排序
        for i, name in enumerate(members, start=1):
            groups[group_number][i - 1] = f"{name} (抽签号: {i})"

    return groups

def on_submit():
    """
    处理提交按钮点击事件
    """
    try:
        total_people = int(entry_people.get())
        num_groups = int(entry_groups.get())

        if total_people <= 0 or num_groups <= 0:
            messagebox.showerror("错误", "人数和组数必须大于 0")
            return

        if num_groups > total_people:
            messagebox.showerror("错误", "组数不能大于总人数")
            return

        # 分配组别
        groups = assign_groups(total_people, num_groups)

        # 显示分组结果
        result_text.delete(1.0, tk.END)  # 清空文本框
        for group_number, members in groups.items():
            result_text.insert(tk.END, f"组 {group_number}:\n")
            result_text.insert(tk.END, "\n".join(members) + "\n\n")
    except ValueError:
        messagebox.showerror("错误", "请输入有效的数字")

def export_results():
    """
    导出分组结果为文本文件
    """
    # 获取分组结果
    results = result_text.get(1.0, tk.END)
    if not results.strip():
        messagebox.showerror("错误", "没有分组结果可导出")
        return

    # 选择保存路径
    file_path = filedialog.asksaveasfilename(
        defaultextension=".txt",
        filetypes=[("Text Files", "*.txt")],
        title="保存分组结果"
    )
    if not file_path:
        return

    # 写入文件
    with open(file_path, "w", encoding="utf-8") as file:
        file.write(results)
    messagebox.showinfo("成功", f"分组结果已保存到 {file_path}")

# 创建主窗口
root = tk.Tk()
root.title("分组工具")
root.geometry("600x500")
root.configure(bg="#f0f0f0")

# 设置字体
font_title = ("Helvetica", 18, "bold")
font_label = ("Helvetica", 12)
font_button = ("Helvetica", 12, "bold")

# 设置渐变背景
canvas = tk.Canvas(root, width=600, height=500, highlightthickness=0)
canvas.pack(fill="both", expand=True)
canvas.create_rectangle(0, 0, 600, 500, fill="#6a11cb", outline="#6a11cb")  # 紫色渐变
canvas.create_rectangle(0, 0, 600, 500, fill="#2575fc", outline="#2575fc")  # 蓝色渐变
canvas.create_rectangle(0, 0, 600, 500, fill="#6a11cb", outline="#6a11cb")  # 紫色渐变

# 标题
title_label = tk.Label(root, text="分组工具", font=font_title, bg="#6a11cb", fg="#ffffff")
title_label.place(relx=0.5, rely=0.1, anchor="center")

# 输入框框架
input_frame = tk.Frame(root, bg="#ffffff", bd=2, relief="groove")
input_frame.place(relx=0.5, rely=0.3, anchor="center", width=400, height=100)

# 输入总人数
label_people = tk.Label(input_frame, text="总人数:", font=font_label, bg="#ffffff", fg="#333333")
label_people.grid(row=0, column=0, padx=10, pady=10)
entry_people = ttk.Entry(input_frame, font=font_label, width=20)
entry_people.grid(row=0, column=1, padx=10, pady=10)

# 输入组数
label_groups = tk.Label(input_frame, text="组数:", font=font_label, bg="#ffffff", fg="#333333")
label_groups.grid(row=1, column=0, padx=10, pady=10)
entry_groups = ttk.Entry(input_frame, font=font_label, width=20)
entry_groups.grid(row=1, column=1, padx=10, pady=10)

# 按钮框架
button_frame = tk.Frame(root, bg="#ffffff", bd=2, relief="groove")
button_frame.place(relx=0.5, rely=0.45, anchor="center", width=400, height=60)

# 提交按钮
submit_button = ttk.Button(button_frame, text="分组", command=on_submit, style="Accent.TButton")
submit_button.grid(row=0, column=0, padx=10, pady=10)

# 导出按钮
export_button = ttk.Button(button_frame, text="导出结果", command=export_results, style="Accent.TButton")
export_button.grid(row=0, column=1, padx=10, pady=10)

# 显示分组结果
result_text = scrolledtext.ScrolledText(root, width=60, height=15, font=font_label, bg="#ffffff", fg="#333333")
result_text.place(relx=0.5, rely=0.75, anchor="center", width=550, height=200)

# 设置按钮样式
style = ttk.Style()
style.configure("Accent.TButton", font=font_button, background="#2575fc", foreground="#ffffff")

# 运行主循环
root.mainloop()

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐