Python:颜色转换器,一个转换颜色格式、调节颜色的小工具,支持RGB、HSV、16进制互转

38 阅读3分钟

下载地址:

exe文件:

download.csdn.net/download/we…

py文件:

download.csdn.net/download/we…


话不多说直接上代码:

代码

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

#颜色转换器

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

#可以进行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(r), 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(r):', 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()

hsvargs = {'command': lambda value: self.show('hsv'), 'sliderlength': 20, 'showvalue': False, 'orient': 'horizontal'} #一些滑块参数

#H

Label(self.frm_rgbhev, text='色调0~360(h):', anchor='w').grid(column=0, row=4, sticky='we')

self.entry_h = Entry(self.frm_rgbhev, textvariable=self.hvar, width=10)

self.entry_h.grid(column=1, row=4, sticky='we')

self.scale_h = Scale(self.frm_rgbhev, variable=self.hvar, from_=0, to=360, resolution=10, **hsvargs)

self.scale_h.grid(column=2, row=4, sticky='we')

#S

Label(self.frm_rgbhev, text='纯度0~1(s):', anchor='w').grid(column=0, row=5, sticky='we')

self.entry_s = Entry(self.frm_rgbhev, textvariable=self.svar, width=10)

self.entry_s.grid(column=1, row=5, sticky='we')

self.scale_s = Scale(self.frm_rgbhev, variable=self.svar, from_=0, to=1, resolution=0.1, **hsvargs)

self.scale_s.grid(column=2, row=5, sticky='we')

#V

Label(self.frm_rgbhev, text='明度0~1(v):', anchor='w').grid(column=0, row=6, sticky='we')

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

了解详情:docs.qq.com/doc/DSnl3ZG…