1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
# Python3 utf8
# Comment traiter les couleurs hexas chromatiques
from tkinter import *
root = Tk()
root.geometry("600x600")
cant = Canvas(root, width=600, height=600)
cant.pack()
col_class = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']
col_hexas = ['#FF0000', '#FFA500', '#FFFF00', '#008000', '#0000FF', '#4B0082', '#EE82EE']
col_modes = ['Chrome2', 'Chrome4', 'Chrome7', 'Chrome9','Chrome11']
col_diato = ['Tonice', 'Tonale', 'Mélody', 'Médian', 'Domine', 'Harmony', 'Sensif']
col_perso = {}
# Fonction de translation de int vers code couleur
def hex_trans(code0, code1, colo0, colo1):
('code0:', code0, ' code1:', code1, 'col_perso:', col_perso[code0])
# code0: #FF0000 code1: #FFA500 col_perso: Tonice
liste_rvb = ''
code00 = code0[1:] # Former un code correct
code01, code02, code03 = code00[:2], code00[2:4:], code00[4:] # Sectionner code00
code04 = [code01, code02, code03] # Assemblage résultat
code05 = [int(code01, 16), int(code02, 16), int(code03, 16)] # Hexa vers integer
code10 = code1[1:] # Former un code correct
code11, code12, code13 = code10[:2], code10[2:4:], code10[4:] # Sectionner code10
code14 = [code11, code12, code13] # Assemblage résultat
code15 = [int(code11, 16), int(code12, 16), int(code13, 16)] # Hexa vers integer
code20, code21 = [], '#'
# Calculer la différence pour obtenir une moyenne
for lc in range(len(code05)):
if code05[lc] == code15[lc]:
code20.append(code05[lc])
else:
res_dif = (code05[lc] - code15[lc]) // 2
res_fin = code05[lc] - res_dif
code20.append(res_fin)
# Assembler les codes hexas
for c20 in code20:
c21 = hex(c20)[2:]
if len(c21) == 1:
c21 = '0' + c21
code21 += c21
liste_rvb = code21
liste_rvb = liste_rvb.upper()
return liste_rvb
intro, entre, res, col_count = 30, 10, 0, -1
x0 = x1 = y1 = intro
for lin in range(7):
col_perso[col_hexas[lin]] = col_diato[lin]
cant.create_line(x1, y1, x1*10, y1, width=6, fill=col_hexas[lin])
cant.create_text(x1*11, y1, text=col_class[lin], fill='black')
res += 1 # Accès à la prochaine couleur
if lin != 2:
# res += 1 # Accès à la prochaine couleur
if res < 7:
autre_ligne = True
col_count += 1
col_hexa2 = col_hexas[res]
ret_trans = hex_trans(col_hexas[lin], col_hexa2, col_class[lin], col_class[res])
col_perso[ret_trans] = col_modes[col_count]
(ret_trans, 'Envoi col_perso:', col_perso[ret_trans], '\tcol_count:', col_count)
# #FF5300 Envoi col_perso: Chrome2 col_count: 0
comment = 'Intermédiaire entre ' + col_class[lin] + ' et ' + col_class[res]
else:
comment, autre_ligne = '', False
elif lin == 2:
autre_ligne = False
y1 += 15
if autre_ligne:
cant.create_line(x1, y1, x1*10, y1, width=6, fill=ret_trans)
cant.create_text(x1*14, y1, text=comment, fill='black')
y1 += 30
x1 += 30
for kcp, vcp in col_perso.items():
cant.create_line(x1, y1, x1*2, y1, width=12, fill=kcp)
cant.create_text(x1*3, y1, text=vcp, fill='black')
y1 += 13
root.mainloop() |
Partager