话不多说直接上代码:

代码

=====================================================================

#颜色转换器

#这是一个转换颜色格式、调节颜色的小工具

#可以进行RGB、HSV、16进制色互转,以方便取色

#作者:H.612

from tkinter import Tk

from tkinter import Label

from tkinter import Frame

from tkinter import Entry

from tkinter import Scale

from tkinter import StringVar

from tkinter import Menu

from tkinter import Message

from tkinter import Toplevel

from tkinter.ttk import Separator

from math import floor

#这里的格式转换我就不多说了,各位可以自己去搜索一下

#RGB转HSV

def rgbtohsv(r, g, b):

r, g, b, = float®, float(g), float(b)

r, g, b = r/255.0, g/255.0, b/255.0

_max = max(r, g, b)

_min = min(r, g, b)

V = _max

if V == 0:

return 0, 0, 0

S = (_max - _min) / _max

if r == g == b:

return 0, 0, round(V, 3)

if r == _max:

H = (g - b) / (_max - _min) * 60

if g == _max:

H = 120 + (b - r)/(_max - _min) * 60

if b == _max:

H = 240 + (r - g)/(_max - _min) * 60

if H < 0:

H += 360

#H = H

#S = S * 255

#V = V * 255

return int(H), round(S, 3), round(V, 3)

#HSV转RGB

def hsvtorgb(h, s, v):

h = float(h)

s = float(s)

v = float(v)

h60 = h / 60.0

h60f = floor(h60)

hi = int(h60f) % 6

f = h60 - h60f

p = v * (1 - s)

q = v * (1 - f * s)

t = v * (1 - (1 - f) * s)

r, g, b = 0, 0, 0

if hi == 0:

r, g, b = v, t, p

elif hi == 1:

r, g, b = q, v, p

elif hi == 2:

r, g, b = p, v, t

elif hi == 3:

r, g, b = p, q, v

elif hi == 4:

r, g, b = t, p, v

elif hi == 5:

r, g, b = v, p, q

r, g, b = int(r * 255), int(g * 255), int(b * 255)

return r, g, b

#RGB转16进制

def rgbtohex(r, g, b):

text = ‘#’ + ‘’.join([hex(i)[-2:].replace(‘x’,‘0’) for i in list(map(int, [r, g, b]))])

return text

#16进制转RGB

def hextorgb(text: str):

r = int(‘0x’ + text[1:3], 16)

g = int(‘0x’ + text[3:5], 16)

b = int(‘0x’ + text[5:7], 16)

return r, g, b

#GUI界面

class gui:

def init(self):

#gui界面

self.root = Tk(className = ‘颜色转换器’)

self.root.attributes(‘-topmost’, True)

self.root.resizable(0, 0)

self.root.iconbitmap(‘colours_icon.ico’)

#RGB、HSV框

self.frm_rgbhev = Frame(self.root)

self.frm_rgbhev.grid(column=0, row=0, padx=5, pady=5)

#RGB部分

self.rvar = StringVar() #实例化StringVar

self.gvar = StringVar()

self.bvar = StringVar()

rgbargs = {‘command’: lambda value: self.show(‘rgb’), ‘from_’: 0, ‘to’: 255, ‘resolution’: 5, ‘sliderlength’: 20, ‘showvalue’: False, ‘orient’: ‘horizontal’} #一些滑块参数

#R

Label(self.frm_rgbhev, text=‘红0~255®:’, anchor=‘w’).grid(column=0, row=0, sticky=‘we’)

self.entry_r = Entry(self.frm_rgbhev, textvariable=self.rvar, width=10)

self.entry_r.grid(column=1, row=0, sticky=‘we’)

self.scale_r = Scale(self.frm_rgbhev, variable=self.rvar, **rgbargs)

self.scale_r.grid(column=2, row=0, sticky=‘we’)

#G

Label(self.frm_rgbhev, text=‘绿0~255(g):’, anchor=‘w’).grid(column=0, row=1, sticky=‘we’)

self.entry_g = Entry(self.frm_rgbhev, textvariable=self.gvar, width=10)

self.entry_g.grid(column=1, row=1, sticky=‘we’)

self.scale_g = Scale(self.frm_rgbhev, variable=self.gvar, **rgbargs)

self.scale_g.grid(column=2, row=1, sticky=‘we’)

#B

Label(self.frm_rgbhev, text=‘蓝0~255(b):’, anchor=‘w’).grid(column=0, row=2, sticky=‘we’)

self.entry_b = Entry(self.frm_rgbhev, textvariable=self.bvar, width=10)

self.entry_b.grid(column=1, row=2, sticky=‘we’)

self.scale_b = Scale(self.frm_rgbhev, variable=self.bvar, **rgbargs)

self.scale_b.grid(column=2, row=2, sticky=‘we’)

#为了得到最新值,我们等10毫秒再获取输入框的值。后面的也和这里一样:

self.entry_r.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘rgb’)))

self.entry_g.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘rgb’)))

self.entry_b.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘rgb’)))

#分界线

Separator(self.frm_rgbhev, orient=‘horizontal’).grid(column=0, row=3, columnspan=3, pady=5, sticky=‘we’)

#HSV部分

self.hvar = StringVar() #实例化StringVar

self.svar = StringVar()

self.vvar = StringVar()

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐