import tkinter as tk r = tk.Tk() r.withdraw() hexes = '0123456789abcdef' enex = list(zip(range(16), hexes)) def rval(col): return r.winfo_rgb(col)[0] # ON WINDOWS: # 1 hex digit is quadrupled and value multiplied by 17 * 257. print(all( rval(f'#{x}00') == rval(f'#{x}{x}{x}{x}00000000') == i * 17 * 257 for i, x in enex)) # 2 hex digits are doubled and value multiplied by 257 print(all( rval(f'#{x}{y}0000') == rval(f'#{x}{y}{x}{y}00000000') == (i*16 + j) * 257 for i, x in enex for j, y in enex)) # 3 or 4 hex digits are truncated to 2 leading digits (doubled print(all( rval(f'#{x}{y}{t}{u}00000000') == rval(f'#{x}{y}0000000000') for x in hexes for y in hexes for t in hexes for u in hexes)) # Prints True, True, and seconds later, True.