#!/usr/bin/python3 import tkinter from tkinter.constants import * window = tkinter.Tk () window.wm_title ('X11 Colours') canvas = tkinter.Canvas (window) frame = tkinter.Frame (canvas) scrollbar = tkinter.Scrollbar (window, command=canvas.yview) canvas.configure (yscrollcommand=scrollbar.set) scrollbar.pack(fill=Y, expand=1, side=RIGHT) canvas.pack (fill=BOTH, expand=1, side=LEFT) canvas.create_window ((0,0), window=frame, anchor=NW) frame.bind ("", lambda e: canvas.configure (scrollregion=canvas.bbox ('all'))) with open ("/etc/X11/rgb.txt") as txt: colours = txt.readlines () for r,g,b,name in ((int(l[0]),int(l[1]),int(l[2]),l[3]) for l in (colour.rstrip ().split (maxsplit=3) for colour in colours[1:])): # Each colour band should be weighted: Half red is not as bright as half green. tkinter.Label (frame, text=f'{name} ({r+b+g})', bg=f'#{r:02x}{g:02x}{b:02x}',fg='black' if r+g+b > 381 else 'white').pack (fill=X, expand=1) window.mainloop ()