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

一、Python所有方向的学习路线

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

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

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

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

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

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()

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’)

self.entry_v = Entry(self.frm_rgbhev, textvariable=self.vvar, width=10)

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

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

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

self.entry_h.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘hsv’)))

self.entry_s.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘hsv’)))

self.entry_v.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘hsv’)))

#HEX输入框、显示框

self.hexvar = StringVar()

#Frame

self.showfrm = Frame(self.root)

self.showfrm.grid(column=2, row=0, rowspan=2, sticky=‘wens’)

#HEX

Label(self.showfrm, text=‘16进制(hex):’, anchor=‘w’).grid(column=0, row=0, sticky=‘ns’)

self.entry_hex = Entry(self.showfrm, textvariable=self.hexvar, width=15)

self.entry_hex.grid(column=1, row=0, sticky=‘ns’, padx=(0,5), pady=(5,0))

#显示颜色

self.lab_show = Label(self.showfrm, bg=‘black’)

self.lab_show.grid(column=0, row=1, columnspan=2, sticky=‘wens’, padx=(0,5), pady=(0,5))

self.showfrm.grid_rowconfigure(1, weight=1)

self.entry_hex.bind(‘’, lambda event: self.root.after(10, lambda:self.show(‘hex’)))

self.root.mainloop()

#在标签内显示颜色,并同步颜色值

def show(self, form):

if form == ‘rgb’:

self.list_rgb = list()

for i in [self.rvar, self.gvar, self.bvar]:

self.list_rgb.append(int(i.get()) if i.get() else 0)

self.list_hsv = [*rgbtohsv(*self.list_rgb)]

self.hvar.set(self.list_hsv[0])

self.svar.set(self.list_hsv[1])

self.vvar.set(self.list_hsv[2])

self.hexvar.set(rgbtohex(*self.list_rgb))

self.lab_show.configure(bg=rgbtohex(*self.list_rgb))

elif form == ‘hsv’:

self.list_hsv = list()

for i in [self.hvar, self.svar, self.vvar]:

self.list_hsv.append(float(i.get()) if i.get() else 0)

self.list_rgb = [*hsvtorgb(*self.list_hsv)]

self.rvar.set(self.list_rgb[0])

self.gvar.set(self.list_rgb[1])

self.bvar.set(self.list_rgb[2])

self.hexvar.set(rgbtohex(*self.list_rgb))

self.lab_show.configure(bg=rgbtohex(*self.list_rgb))

else:

if len(self.hexvar.get()) == 7:

self.list_rgb = [*hextorgb(self.hexvar.get())]

self.list_hsv = [*rgbtohsv(*self.list_rgb)]

self.rvar.set(self.list_rgb[0])

self.gvar.set(self.list_rgb[1])

self.bvar.set(self.list_rgb[2])

self.hvar.set(self.list_hsv[0])

self.svar.set(self.list_hsv[1])

self.vvar.set(self.list_hsv[2])

try: self.lab_show.configure(bg=self.hexvar.get())

except: pass

if name == ‘main’:

gui()


Cresyeal
2021/7/15

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

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

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

在这里插入图片描述

(2)Python学习视频

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

在这里插入图片描述

(3)100多个练手项目

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

在这里插入图片描述

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值