from tkinter import *import pyperclip# 颜色数据colors = '''#FFB6C1 LightPink 浅粉红#FFC0CB Pink 粉红#DC143C Crimson 深红/猩红#FFF0F5 LavenderBlush 淡紫红#DB7093 PaleVioletRed 弱紫罗兰红#FF69B4 HotPink 热情的粉红#FF1493 DeepPink 深粉红#C71585 MediumVioletRed 中紫罗兰红#DA70D6 Orchid 暗紫色/兰花紫#D8BFD8 Thistle 蓟色#DDA0DD Plum 洋李色/李子紫#EE82EE Violet 紫罗兰#FF00FF Magenta 洋红/玫瑰红#FF00FF Fuchsia 紫红/灯笼海棠#8B008B DarkMagenta 深洋红#800080 Purple 紫色#BA55D3 MediumOrchid 中兰花紫#9400D3 DarkViolet 暗紫罗兰#9932CC DarkOrchid 暗兰花紫#4B0082 Indigo 靛青/紫兰色#8A2BE2 BlueViolet 蓝紫罗兰#9370DB MediumPurple 中紫色#7B68EE MediumSlateBlue 中暗蓝色/中板岩蓝#6A5ACD SlateBlue 石蓝色/板岩蓝#483D8B DarkSlateBlue 暗灰蓝色/暗板岩蓝#E6E6FA Lavender 淡紫色/熏衣草淡紫#F8F8FF GhostWhite 幽灵白#0000FF Blue 纯蓝#0000CD MediumBlue 中蓝色#191970 MidnightBlue 午夜蓝#00008B DarkBlue 暗蓝色#000080 Navy 海军蓝#4169E1 RoyalBlue 皇家蓝/宝蓝#6495ED CornflowerBlue 矢车菊蓝#B0C4DE LightSteelBlue 亮钢蓝#778899 LightSlateGray 亮蓝灰/亮石板灰#708090 SlateGray 灰石色/石板灰#1E90FF DodgerBlue 闪兰色/道奇蓝#F0F8FF AliceBlue 爱丽丝蓝#4682B4 SteelBlue 钢蓝/铁青#87CEFA LightSkyBlue 亮天蓝色#87CEEB SkyBlue 天蓝色#00BFFF DeepSkyBlue 深天蓝#ADD8E6 LightBlue 亮蓝#B0E0E6 PowderBlue 粉蓝色/火药青#5F9EA0 CadetBlue 军兰色/军服蓝#F0FFFF Azure 蔚蓝色#E0FFFF LightCyan 淡青色#AFEEEE PaleTurquoise 弱绿宝石#00FFFF Cyan 青色#00FFFF Aqua 浅绿色/水色#00CED1 DarkTurquoise 暗绿宝石#2F4F4F DarkSlateGray 暗瓦灰色/暗石板灰#008B8B DarkCyan 暗青色#008080 Teal 水鸭色#48D1CC MediumTurquoise 中绿宝石#20B2AA LightSeaGreen 浅海洋绿#40E0D0 Turquoise 绿宝石#7FFFD4 Aquamarine 宝石碧绿#66CDAA MediumAquamarine 中宝石碧绿#00FA9A MediumSpringGreen 中春绿色#F5FFFA MintCream 薄荷奶油#00FF7F SpringGreen 春绿色#3CB371 MediumSeaGreen 中海洋绿#2E8B57 SeaGreen 海洋绿#F0FFF0 Honeydew 蜜色/蜜瓜色#90EE90 LightGreen 淡绿色#98FB98 PaleGreen 弱绿色#8FBC8F DarkSeaGreen 暗海洋绿#32CD32 LimeGreen 闪光深绿#00FF00 Lime 闪光绿#228B22 ForestGreen 森林绿#008000 Green 纯绿#006400 DarkGreen 暗绿色#7FFF00 Chartreuse 黄绿色/查特酒绿#7CFC00 LawnGreen 草绿色/草坪绿#ADFF2F GreenYellow 绿黄色#556B2F DarkOliveGreen 暗橄榄绿#9ACD32 YellowGreen 黄绿色#6B8E23 OliveDrab 橄榄褐色#F5F5DC Beige 米色/灰棕色#FAFAD2 LightGoldenrodYellow 亮菊黄#FFFFF0 Ivory 象牙色#FFFFE0 LightYellow 浅黄色#FFFF00 Yellow 纯黄#808000 Olive 橄榄#BDB76B DarkKhaki 暗黄褐色/深卡叽布#FFFACD LemonChiffon 柠檬绸#EEE8AA PaleGoldenrod 灰菊黄/苍麒麟色#F0E68C Khaki 黄褐色/卡叽布#FFD700 Gold 金色#FFF8DC Cornsilk 玉米丝色#DAA520 Goldenrod 金菊黄#B8860B DarkGoldenrod 暗金菊黄#FFFAF0 FloralWhite 花的白色#FDF5E6 OldLace 老花色/旧蕾丝#F5DEB3 Wheat 浅黄色/小麦色#FFE4B5 Moccasin 鹿皮色/鹿皮靴#FFA500 Orange 橙色#FFEFD5 PapayaWhip 番木色/番木瓜#FFEBCD BlanchedAlmond 白杏色#FFDEAD NavajoWhite 纳瓦白/土著白#FAEBD7 AntiqueWhite 古董白#D2B48C Tan 茶色#DEB887 BurlyWood 硬木色#FFE4C4 Bisque 陶坯黄#FF8C00 DarkOrange 深橙色#FAF0E6 Linen 亚麻布#CD853F Peru 秘鲁色#FFDAB9 PeachPuff 桃肉色#F4A460 SandyBrown 沙棕色#D2691E Chocolate 巧克力色#8B4513 SaddleBrown 重褐色/马鞍棕色#FFF5EE Seashell 海贝壳#A0522D Sienna 黄土赭色#FFA07A LightSalmon 浅鲑鱼肉色#FF7F50 Coral 珊瑚#FF4500 OrangeRed 橙红色#E9967A DarkSalmon 深鲜肉/鲑鱼色#FF6347 Tomato 番茄红#FFE4E1 MistyRose 浅玫瑰色/薄雾玫瑰#FA8072 Salmon 鲜肉/鲑鱼色#FFFAFA Snow 雪白色#F08080 LightCoral 淡珊瑚色#BC8F8F RosyBrown 玫瑰棕色#CD5C5C IndianRed 印度红#FF0000 Red 纯红#A52A2A Brown 棕色#B22222 FireBrick 火砖色/耐火砖#8B0000 DarkRed 深红色#800000 Maroon 栗色#FFFFFF White 纯白#F5F5F5 WhiteSmoke 白烟#DCDCDC Gainsboro 淡灰色#D3D3D3 LightGrey 浅灰色#C0C0C0 Silver 银灰色#A9A9A9 DarkGray 深灰色#808080 Gray 灰色#696969 DimGray 暗淡灰#000000 Black 纯黑'''def on_hover(event, color_code, label): """鼠标悬浮事件:更新提示文本为颜色代码""" tip_label.config(text=f"颜色代码:{color_code}") # 高亮当前颜色块(可选,增加视觉反馈) label.config(relief=SOLID, bd=2)def on_leave(event, label): """鼠标离开事件:清空提示文本,恢复颜色块样式""" tip_label.config(text="鼠标悬浮查看颜色代码,双击复制") label.config(relief=FLAT, bd=0)def on_double_click(event, color_code): """双击事件:复制颜色代码到剪贴板""" pyperclip.copy(color_code) tip_label.config(text=f"已复制:{color_code} 到剪贴板!")if __name__ == "__main__": root = Tk() root.title("Python 常用颜色查询拾取") root.geometry("1200x800") # 设置窗口初始大小 # 1. 创建提示标签(显示颜色代码/复制状态) tip_label = Label(root, text="鼠标悬浮查看颜色代码,双击复制", font=("Arial", 12)) tip_label.pack(pady=10, fill=X) # 2. 创建画布/框架用于放置正方形色块(使用Frame实现网格布局) color_frame = Frame(root) color_frame.pack(pady=10, fill=BOTH, expand=True) # 配置参数 block_size = 50 # 正方形色块的边长(可调整) col_count = 12 # 每行显示的色块数量(可调整,适配窗口宽度) i = 0 # 计数器 # 3. 解析颜色数据,生成正方形色块 for color_line in colors.split('\n'): if not color_line.strip(): # 跳过空行 continue try: # 拆分颜色代码、英文名称、中文名称 parts = color_line.split(' ') color_code = parts[0].strip() # 提取十六进制颜色代码 # 创建正方形色块(用Label实现,宽高设为相同值) color_block = Label( color_frame, bg=color_code, width=block_size//10, # 配合font调整,保证正方形 height=block_size//20, # 与width搭配,使Label呈现正方形 bd=0, relief=FLAT ) # 计算网格位置(行、列) row = i // col_count col = i % col_count # 放置色块,设置网格权重(实现自动对齐) color_block.grid( row=row, column=col, padx=1, # 色块之间的水平间距 pady=1, # 色块之间的垂直间距 sticky=N+S+E+W ) # 绑定事件 color_block.bind("<Enter>", lambda e, cc=color_code, lb=color_block: on_hover(e, cc, lb)) color_block.bind("<Leave>", lambda e, lb=color_block: on_leave(e, lb)) color_block.bind("<Double-Button-1>", lambda e, cc=color_code: on_double_click(e, cc)) i += 1 except Exception as e: print(f"处理颜色失败:{color_line},错误:{e}") continue # 4. 配置网格权重,使窗口缩放时色块布局更合理 for c in range(col_count): color_frame.grid_columnconfigure(c, weight=1) for r in range(i // col_count + 1): color_frame.grid_rowconfigure(r, weight=1) root.mainloop()