適当のごった煮

Pythonと境界標とQGISを中心にいろいろと

Python tkinterで色と16進数確認用スクリプトを作る

スポンサードリンク

Pythonのtkinterのスクロールバーを利用して、RGBが各8ビットを持つ色表現の色と、その時の16進数の値を確認できるスクリプトを作成しました。スクロールバーを少しでも動かすとすぐに反応するので、いじっているだけで結構楽しめます。

f:id:tekito-gottani:20190128200558j:plain

f:id:tekito-gottani:20190128200621j:plain

f:id:tekito-gottani:20190128200630j:plain

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()