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