> 技术文档 > 二次元姓名生成器(饮料名+动漫角色名)

二次元姓名生成器(饮料名+动漫角色名)

本文介绍了一个基于Python Tkinter的二次元姓名生成器GUI程序。该程序可以从预设的饮料名称和动漫角色名(分为男性和女性)中随机组合生成不超过5个字的二次元风格姓名。

主要功能包括:

1)可选择生成男生名或女生名;

2)点击按钮随机生成姓名;

3)支持复制结果到剪贴板。程序界面采用现代化设计,包含标题、性别选择区、生成按钮、结果显示区和复制按钮。

该工具适合二次元爱好者或需要随机姓名的场景使用。 

import tkinter as tkfrom tkinter import ttkimport randomimport sys# 扩展的饮料名称列表beverages = [ \"雪碧\", \"可乐\", \"旺仔\", \"奶茶\", \"咖啡\", \"橙汁\", \"绿茶\", \"红茶\", \"牛奶\", \"酸奶\", \"椰汁\", \"柠檬\", \"美年达\", \"芬达\", \"脉动\", \"冰红茶\", \"养乐多\", \"王老吉\", \"加多宝\", \"红牛\", \"乌龙茶\", \"茉莉\", \"蜂蜜\", \"柚子\", \"蓝莓\", \"芒果\", \"草莓\", \"西瓜\", \"蜜桃\", \"葡萄\", \"苹果\", \"香蕉\", \"菠萝\", \"石榴\", \"樱桃\", \"荔枝\", \"桂圆\", \"杏仁\", \"核桃\", \"花生\", \"芝麻\", \"红豆\", \"绿豆\", \"黑豆\", \"燕麦\", \"小麦\"]# 扩展的动漫角色列表(分为男性和女性)male_chars = [ \"司空震\", \"孙悟空\", \"路飞\", \"鸣人\", \"佐助\", \"柯南\", \"大雄\", \"胖虎\", \"小夫\", \"黑崎\", \"银时\", \"冲田\", \"炭治郎\", \"善逸\", \"伊之助\", \"索隆\", \"艾斯\", \"鼬\", \"卡卡西\", \"我爱罗\", \"犬夜叉\", \"杀生丸\", \"夜斗\", \"坂田\", \"土方\", \"总悟\", \"新八\", \"剑心\", \"斋藤\", \"绯村\", \"工藤\", \"服部\", \"基德\", \"赤井\", \"安室\", \"夏目\", \"赵云\", \"韩信\", \"李白\", \"诸葛亮\", \"吕布\", \"关羽\", \"张飞\", \"马超\", \"黄忠\", \"刘备\", \"曹操\", \"典韦\", \"夏侯惇\", \"夏侯渊\", \"周瑜\", \"孙策\", \"孙权\", \"司马懿\", \"元歌\", \"百里守约\", \"百里玄策\", \"铠\", \"曜\", \"镜\", \"澜\", \"暃\", \"晟\", \"李信\", \"盘古\", \"达摩\", \"哪吒\"]female_chars = [ \"小乔\", \"安琪拉\", \"静香\", \"灰原\", \"小兰\", \"露琪亚\", \"神乐\", \"祢豆子\", \"娜美\", \"罗宾\", \"雏田\", \"井野\", \"赫敏\", \"亚丝娜\", \"三笠\", \"小樱\", \"纲手\", \"日向\", \"天天\", \"手鞠\", \"戈薇\", \"桔梗\", \"珊瑚\", \"神无\", \"神久夜\", \"雪女\", \"阎魔\", \"彼岸\", \"花子\", \"千与\", \"波妞\", \"苏菲\", \"琪琪\", \"小梅\", \"小月\", \"小葵\", \"小玉\", \"小町\", \"妲己\", \"貂蝉\", \"王昭君\", \"西施\", \"杨玉环\", \"大乔\", \"小乔\", \"孙尚香\", \"虞姬\", \"芈月\", \"武则天\", \"甄姬\", \"嫦娥\", \"女娲\", \"露娜\", \"镜\", \"阿轲\", \"花木兰\", \"公孙离\", \"瑶\", \"云缨\", \"夏洛特\", \"蔡文姬\", \"安琪拉\", \"不知火舞\", \"娜可露露\", \"伽罗\", \"米莱狄\"]def center_window(window, width, height): \"\"\"将窗口居中显示\"\"\" screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() x = (screen_width - width) // 2 y = (screen_height - height) // 2 window.geometry(f\"{width}x{height}+{x}+{y}\")def generate_name(): \"\"\"生成随机姓名\"\"\" gender = gender_var.get() # 确保生成的姓名不超过5个字 while True: beverage = random.choice(beverages) if gender == \"男\": char = random.choice(male_chars) else: char = random.choice(female_chars) full_name = beverage + char # 检查总长度 if len(full_name) <= 5: break result_label.config(text=full_name) copy_btn.config(state=tk.NORMAL) # 启用复制按钮def copy_to_clipboard(): \"\"\"复制结果到剪贴板\"\"\" result = result_label.cget(\"text\") if result and result != \"点击上方按钮生成\": root.clipboard_clear() root.clipboard_append(result) copy_btn.config(text=\"已复制!\") root.after(2000, lambda: copy_btn.config(text=\"复制\"))def on_closing(): \"\"\"关闭窗口时的操作\"\"\" root.destroy() sys.exit()# 创建主窗口root = tk.Tk()root.title(\"二次元姓名生成器\")root.resizable(False, False)center_window(root, 400, 340)# 设置主题颜色bg_color = \"#F5F5F5\"button_color = \"#4D96FF\"button_hover = \"#3A7BD5\"result_bg = \"#FFFFFF\"frame_border = \"#E0E0E0\"# 配置样式style = ttk.Style()style.theme_use(\"clam\")style.configure(\"TFrame\", background=bg_color)style.configure(\"TLabel\", background=bg_color, font=(\"微软雅黑\", 10))style.configure(\"TButton\", font=(\"微软雅黑\", 11), background=button_color, foreground=\"white\", borderwidth=1, padding=5)style.map(\"TButton\", background=[(\"active\", button_hover)])style.configure(\"TRadiobutton\", background=bg_color, font=(\"微软雅黑\", 10))style.configure(\"Title.TLabel\", font=(\"微软雅黑\", 16, \"bold\"), foreground=\"#333333\")style.configure(\"Result.TLabel\", font=(\"微软雅黑\", 18, \"bold\"), foreground=\"#4D96FF\", background=result_bg, anchor=\"center\")# 主框架main_frame = ttk.Frame(root, padding=20)main_frame.pack(fill=tk.BOTH, expand=True)# 标题title_label = ttk.Label(main_frame, text=\"二次元姓名生成器\", style=\"Title.TLabel\")title_label.pack(pady=(0, 20))# 性别选择框架gender_frame = ttk.Frame(main_frame)gender_frame.pack(pady=10)gender_var = tk.StringVar(value=\"男\")male_rb = ttk.Radiobutton(gender_frame, text=\"男生名\", variable=gender_var, value=\"男\")male_rb.pack(side=tk.LEFT, padx=15)female_rb = ttk.Radiobutton(gender_frame, text=\"女生名\", variable=gender_var, value=\"女\")female_rb.pack(side=tk.LEFT, padx=15)# 生成按钮btn_frame = ttk.Frame(main_frame)btn_frame.pack(pady=15)generate_btn = ttk.Button(btn_frame, text=\"生成有趣的名字\", command=generate_name)generate_btn.pack(side=tk.LEFT, padx=5)# 结果显示区域result_frame = ttk.Frame(main_frame, relief=tk.SOLID, borderwidth=1, style=\"TFrame\", padding=10)result_frame.pack(fill=tk.X, pady=(10, 15), padx=20)result_label = ttk.Label(result_frame, text=\"点击上方按钮生成\", style=\"Result.TLabel\")result_label.pack(fill=tk.BOTH, expand=True)# 复制按钮copy_btn = ttk.Button(main_frame, text=\"复制\", command=copy_to_clipboard,state=tk.DISABLED)copy_btn.pack(pady=(0, 10))# 关闭事件root.protocol(\"WM_DELETE_WINDOW\", on_closing)# 运行主循环root.mainloop()

神漫画在线观看