Python tkinter 事前定義の色名 Windows編

 今日も見に来てくださって、ありがとうございます。

 今回は、tkinterの事前定義の色名にはどんなものがあるのか気になったので作りました。もちろんTcl/Tk本家のホームページのこちらを参考にさせていただきました。実行すると、以下のようなウィンドウが出力されます。

tkinter Windowsでの事前定義の色名

 ソースコードは以下の通りです。

import tkinter as tk

COLORS = [
"system3dDarkShadow", "systemHighlight", "system3dLight", "systemHighlightText", "systemActiveBorder", "systemInactiveBorder", "systemActiveCaption", "systemInactiveCaption", "systemAppWorkspace", "systemInactiveCaptionText",
"systemBackground", "systemInfoBackground", "systemButtonFace", "systemInfoText", "systemButtonHighlight", "systemMenu", "systemButtonShadow", "systemMenuText", "systemButtonText", "systemScrollbar",
"systemCaptionText", "systemWindow", "systemDisabledText", "systemWindowFrame", "systemGrayText", "systemWindowText",
] 

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        for i, c in enumerate(COLORS):
            foreground = "SystemButtonText"
            if self.winfo_rgb(c) <= (10,10,10):
                foreground = "white"
            label = tk.Label(self, text=c, background=c, foreground=foreground)
            label.bind("<Enter>", self.show_color_info)
            label.grid(row=i//5, column=i%5, sticky=(tk.W+tk.E), padx=1, pady=1)
            
    def show_color_info(self, event):
        color = event.widget.cget("text")
        rgb = event.widget.winfo_rgb(color)
        rgbstring = "#%02X%02X%02X"%(rgb[0]//256,rgb[1]//256,rgb[2]//256)
        self.title("You are pointing ["+color+"] and background = "+rgbstring+"]")

if __name__ == "__main__":
    app = App()
    app.mainloop()

 COLORSの内容以外、前回とほとんど変わりませんね。数が減ったので、幅の指定をなくしたのと、色が暗いときには白い字で色名が出力されるようにしました。Mac用の色名も多数あったのでスクリプトを作ったのですけど、ぼくはMacを持っていなくて実行できなかったので、お蔵入りとなりました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.