Bonjour,
J'ai besoin de trouver des équivalences, en 8bits, de couleurs rgb codés en48 bits16 bits que me retournes une commande de Tkinter.
...
Comment m'y prendre?
Bonjour,
J'ai besoin de trouver des équivalences, en 8bits, de couleurs rgb codés en48 bits16 bits que me retournes une commande de Tkinter.
...
Comment m'y prendre?
48 bits ?
J'ai trouvé ce bout de code, il fonctionne très bien chez moi :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import tkinter as tk def hex_to_rgb(value): value = value.lstrip('#') lv = len(value) return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3)) def _from_rgb(rgb): """translates an rgb tuple of int to a tkinter friendly color code """ return "#%02x%02x%02x" % rgb h_color = _from_rgb((0, 10, 255)) print(hex_to_rgb(h_color)) # (0, 10, 255) root = tk.Tk() root.configure(bg=h_color) root.mainloop()
Blog
Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
(Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)
Bonsoir,
merci à vous.
wiztricks : Ma première approche était de faire une règle de trois mais les résultats me paraissaient incorrects . En fait, le problème se situait non pas dans la conversion mais à dans la suite de mon programme. La fatigue aidant j'ai douté et j'ai posté
ça m'a permis de voir ce qu'est une surjection (ben oui , l'école et l'enfance ça date)
danielhagnoul:oui 48bit , il s'agissait du retour de root.winfo_rgb() qui est codé en 48bit ...
édit: il s'agit d'une coquille de la documentation que j'avais consulté... Tkinter travaille en interne en 16 bit.
C'est plus compliqué qu'une règle de 3, voir cet article sur SOW.
- W
Ok je regarderai ça demain à tête reposée. merci
Je n'en suis pas convaincu . Tkinter travaille en interne en 16 bits mais il semble que toutes les couleurs ont leurs équivalences en 8 bits. d'ailleurs lorsqu’on fait bg="##b7f731" ça correspond bien à une couleur rgb codé en 8bits, non?
En tous cas les retours du test ci dessous semblent valides
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import tkinter as tk root = tk.Tk() def hex_to_rgb(value): value = value.lstrip('#') lv = len(value) return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3)) for test in ['pink', 'yellow', 'grey', 'grey4','red4']: frame = tk.LabelFrame(root,text='test', width=100,height=40, bg=test, bd=2) frame.grid() R,G,B=root.winfo_rgb(test) test = "#%02x%02x%02x" %(R//256, G//256, (B//256)) print(R,G,B,"____",test) frame2 = tk.Frame(root, width=100,height=40, bg=test) frame2.grid() for test in ['#b7f731', '#CD5C5C', '#F08080', '#FA8072', '#E9967A', '#454545']: rgb = root.winfo_rgb(test) print(rgb) R, G, B = rgb print((R//256, G//256, B//256)) print(hex_to_rgb(test)) root.mainloop()
Partager