Pythonのtkinterのスクロールバーを利用して、RGBが各8ビットを持つ色表現の色と、その時の16進数の値を確認できるスクリプトを作成しました。スクロールバーを少しでも動かすとすぐに反応するので、いじっているだけで結構楽しめます。
import tkinter as tk
def hex2(num): # 10進数を二桁16進文字列に変換
num2 = hex(num).replace('0x', '')
if len(num2) == 1:
num2 = '0' + num2
return num2
class App(tk.Frame):
def __init__(self, master = None):
tk.Frame.__init__(self, master)
self.pack()
self.create_widgets()
def create_widgets(self):
# ラベル
self.lbl1 = tk.Label(self, text='赤')
self.lbl1.grid(row=0, column=0)
self.lbl2 = tk.Label(self, text='緑')
self.lbl2.grid(row=1, column=0)
self.lbl3 = tk.Label(self, text='青')
self.lbl3.grid(row=2, column=0)
# スクロールバー
self.scrl1 = tk.Scale(self, orient=tk.HORIZONTAL, to=255, command=self.scrl_method)
self.scrl1.grid(row=0, column=1)
self.scrl2 = tk.Scale(self, orient=tk.HORIZONTAL, to=255, command=self.scrl_method)
self.scrl2.grid(row=1, column=1)
self.scrl3 = tk.Scale(self, orient=tk.HORIZONTAL, to=255, command=self.scrl_method)
self.scrl3.grid(row=2, column=1)
# エントリー
self.ent1 = tk.Entry(self, width=50)
self.ent1.grid(row=3, column=0, columnspan=2)
# キャンバスエリア
self.cvs = tk.Canvas(self, bg='#000000', width=250, height=100)
self.cvs.grid(row=4, column=0, columnspan=2)
def scrl_method(self, event):
self.ent1.delete(0, 50)
r = self.scrl1.get()
g = self.scrl2.get()
b = self.scrl3.get()
moji = '(赤, 緑, 青) = ({}, {}, {}) = ({}, {}, {})'.format(r, g, b, hex(r), hex(g), hex(b))
self.ent1.insert(0, moji)
rgb = '#' + '{}{}{}'.format(hex2(r), hex2(g), hex2(b))
self.cvs.configure(bg=rgb)
app = App()
app.mainloop()