KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
Tkinterの色の使い方とは?活用例から色の一覧をまとめて紹介!?

Tkinterの色の使い方とは?活用例から色の一覧をまとめて紹介!?

今回はTkinterの色の使い方に関して解説しながら、活用例、色の一覧をまとめて紹介いたします。色選びに悩んでいた、活用例を通して学びたい方へおすすめです。是非最後までご確認ください。

目次
  1. そもそもどこで色が使えるの?
  2. 色の指定方法
    1. RGBの指定
    2. 色の名称による設定
  3. OSによって色が使えない場合も
  4. Tkinterを用いて色の確認
  5. 色の一覧を表示するスクリプト
  6. まとめ
  7. 参考文献
目次を開く⬇︎

そもそもどこで色が使えるの?

Tkinterで色を活用する場合、option内の設定で利用します。

optionとはWidgetを作成する際に、詳細設定を行うものです。

要するに、

  • Widgetを作る際にoptionが利用できる
  • optionを使うことでWidgetの詳細設定ができる
  • option内で色の設定もできる

と言うことです。

Widgetに関して詳しく知りたい場合は、【初学者必見!?】Tkinterで使われるlabelの活用方法を徹底解説の「Tkinterの構成要素」をご確認ください。

例えばlabel Widgetの場合、以下のコードを記述すると、

1import tkinter as tk
2
3class Application(tk.Frame):
4    # label Widgetを表示する関数
5    def getLabel(self):
6        # label Widgetを作成する。
7        # tk.Label(option1, option2, ...)
8        # text : テキスト情報
9        # width : 幅の設定
10        # height : 高さの設定
11        # bg : 背景色の設定
12        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
13        label = tk.Label(text="test", width=30, height=15, bg="red")
14        # label Widgetをどのように配置するのか?
15        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
16        label.pack()
17
18    def __init__(self, master=None):
19        # Windowの初期設定を行う。
20        super().__init__(master)
21        # Windowの画面サイズを設定する。
22        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
23        self.master.geometry("300x200")
24
25        self.getLabel()
26
27# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
28if __name__ == "__main__":
29    # Windowを生成する。
30    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
31    root = tk.Tk()
32    app = Application(master=root)
33
34    # Windowをループさせて、継続的にWindow表示させる。
35    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
36    app.mainloop()

以下の画像のように、label Widget背景色(bg)を赤色("red")に変更します。

先ほどのコードでは、bg optionを指定して背景色を変更しましたが、色指定をできるoptionはたくさんあります。

以下の表にまとめましたので、一度確認してみてください。

option名option内容optionが利用可能なWidget一覧利用例
background, bg                                    背景色を変更するcanvas, scrollbar, radiobutton, button, listbox, entry, text, scrolledtext, labelframe, label, frame, toplevel, panedwindow, checkbutton, menubutton, spinbox, scale, optionmenubackground="red", bg="red"
foreground, fg文字色を変更するradiobutton, button, listbox, entry, text, scrolledtext, labelframe, label, checkbutton, menubutton, spinbox, scale, optionmenuforeground="red", fg="red"
highlightbackground, highlightcolorそれぞれフォーカスが外れた時の囲い線の色, フォーカスがあてられた時の囲い線の色canvas, listbox, entry, text, scrolledtext, label, frame, toplevel, scrollbar, scale, spinboxhighlightbackground="red", highlightcolor="red"
disabledbackground, disabledforegroundstateが'disabled'の場合にそれぞれ背景色、文字列色を変更する。entry, spinboxdisabledbackground="red", disabledforeground="red"
activebackground, activeforegroundそれぞれクリックした時の背景色、文字列色を変更するbutton, checkbuttonactivebackground="red", activeforeground="red"
readonlybackgroundstateが'readonly'の場合に背景色を変更するentry, spinboxreadonlybackground="red"
selectbackground, selectforegroundそれぞれ選択状態時の背景色、文字列色を変更するcanvas, entry, text, scrolledtext, spinbox, listboxselectbackground="red", selectforeground="red"
insertbackgroundカーソルの色を変更するentry, text, scrolledtext, spinboxinsertbackground="red"
buttonbackgroundボタンの背景色を変更するspinboxbuttonbackground="red"

色の指定方法

色の指定方法は

  • RGBの指定
  • 色の名称による設定

の2種類存在します。順に見ていきましょう。

RGBの指定

RGBとは、色の表現法の一種で、赤、緑、青の三つの色を混ぜて、幅広い色を再現する方法を意味します。

指定方法として、#{赤の割合}{緑の割合}{青の割合}と記述します。

例えば以下のコードを記述すると

1import tkinter as tk
2
3class Application(tk.Frame):
4    # 色に対してRGBを指定して、label Widgetを表示する関数
5    # RGBについて : https://digitalidentity.co.jp/blog/creative/about-rgb-cmyk.html
6    def getRGBLabel(self):
7        # label Widgetを作成する。
8        # tk.Label(option1, option2, ...)
9        # text : テキスト情報
10        # width : 幅の設定
11        # height : 高さの設定
12        # bg : 背景色の設定
13        # RGBを変更する場合 : http://www.netyasun.com/home/color.html
14        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
15        label = tk.Label(text="test", width=30, height=15, bg="#008000")
16        # label Widgetをどのように配置するのか?
17        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
18        label.pack()
19
20    def __init__(self, master=None):
21        # Windowの初期設定を行う。
22        super().__init__(master)
23        # Windowの画面サイズを設定する。
24        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
25        self.master.geometry("300x200")
26        self.getRGBLabel()
27   
28# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
29if __name__ == "__main__":
30    # Windowを生成する。
31    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
32    root = tk.Tk()
33    app = Application(master=root)
34
35    # Windowをループさせて、継続的にWindow表示させる。
36    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
37    app.mainloop()

以下の画像のように、label Widgetの背景色を緑色に変更します。

RGBの値一覧はこちらの記事が参考になりますので、是非ご確認ください。

色の名称による設定

色の名称を指定して、色の設定を行います。

例えば以下のコードを記述すると

1import tkinter as tk
2
3class Application(tk.Frame):
4    # 色に対して名称を指定して、label Widgetを表示する関数
5    def getColorNameLabel(self):
6        # label Widgetを作成する。
7        # tk.Label(option1, option2, ...)
8        # text : テキスト情報
9        # width : 幅の設定
10        # height : 高さの設定
11        # bg : 背景色の設定
12        # 色の設定を変更する場合 : http://www.tcl.tk/man/tcl/TkCmd/colors.htm
13        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
14        label = tk.Label(text="test", width=30, height=15, bg="green")
15        # label Widgetをどのように配置するのか?
16        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
17        label.pack()
18
19    def __init__(self, master=None):
20        # Windowの初期設定を行う。
21        super().__init__(master)
22        # Windowの画面サイズを設定する。
23        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
24        self.master.geometry("300x200")
25        self.getColorNameLabel()
26
27# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
28if __name__ == "__main__":
29    # Windowを生成する。
30    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
31    root = tk.Tk()
32    app = Application(master=root)
33
34    # Windowをループさせて、継続的にWindow表示させる。
35    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
36    app.mainloop()

以下の画像のように、label Widgetの背景色を緑色に変更します。

色の名称一覧はこちらの記事が参考になりますので、是非ご確認ください。

OSによって色が使えない場合も

Tkinterで用意される色には、

  • Windows専用
  • MacOSX専用
  • OS非依存

のものが存在します。

色を設定しても変更されない可能性があるので、留意しておく必要があります。

Tkinterを用いて色の確認

Tkinterを用いて色の確認を行いたい場合、colorchooserを利用すると便利です。

colorchooserは

1import tkinter as tk
2from tkinter import colorchooser
3
4# 色を選択するdialogを表示して、選択する色の情報を戻り値として提供する。
5# dialogとは? : https://wa3.i-3-i.info/word11408.html
6# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
7# 戻り値 : 色を選択する場合(RGB形式) : ((R, G, B), "#RRGBGB"), 色を選択しない場合 : (None, None)
8colorInfo = colorchooser.askcolor()

で定義されます。戻り値として、色を選択した場合 : ((R, G, B), "#RRGBGB"), 色を選択しない場合 : (None, None)が返されます。

例えば以下のコードを記述すると

1import tkinter as tk
2from tkinter import colorchooser
3
4class Application(tk.Frame):
5    # 色を確認するための関数
6    def checkColor(self):
7        print(colorchooser.askcolor())
8        # Windowを削除する。
9        self.master.destroy()
10
11    def __init__(self, master=None):
12        # Windowの初期設定を行う。
13        super().__init__(master)
14        # Windowの画面サイズを設定する。
15        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
16        self.master.geometry("300x200")
17        self.checkColor()
18
19# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
20if __name__ == "__main__":
21    # Windowを生成する。
22    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
23    root = tk.Tk()
24    app = Application(master=root)
25
26    # Windowをループさせて、継続的にWindow表示させる。
27    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
28    app.mainloop()

以下の画像のような画面が現れます。

続けて色を選んでOKボタンをクリックすると、以下の画像のように選択した色の情報を取得できます。

色の一覧を表示するスクリプト

最後に色の一覧を、label Widgetを用いて表示するスクリプトを紹介いたします。

例えば以下のコードを記述すると、

1import tkinter as tk
2from tkinter import colorchooser
3
4# 色に関する情報 : https://www.tcl.tk/man/tcl/TkCmd/colors.html
5colorList = [
6    'alice blue', 'AliceBlue', 'antique white', 'AntiqueWhite', 'AntiqueWhite1', 'AntiqueWhite2', 'AntiqueWhite3', 'AntiqueWhite4', 'aqua', 'aquamarine', 'aquamarine1', 'aquamarine2', 'aquamarine3', 'aquamarine4', 'azure', 'azure1', 'azure2', 'azure3', 'azure4', 'beige', 'bisque', 'bisque1', 'bisque2', 'bisque3', 'bisque4', 'black', 'blanched almond', 'BlanchedAlmond', 'blue'
7]
8
9class Application(tk.Frame):
10    # 色の一覧を表示するスクリプト
11    def showColorList(self):
12        # grid位置を決めるための、カウンタ用変数。
13        i = 0
14        for colorName in colorList:
15            # label Widgetを作成する。
16            # text : テキスト情報
17            # width : 幅の設定
18            # bg : 背景色の設定
19            # foreground : 文字列色の設定
20            # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
21            label = tk.Label(text=colorName, width=15, bg=colorName, foreground='black')
22            # 12個のlabel Widgetを横に表示して、次の行へ移動する。繰り返し、12個のlabel Widgetを横に表示する。
23            # gridについて : https://kuroro.blog/python/JoaowDiUdLAOj3cSBxiX/
24            label.grid(row=int((i / 12)), column=(i % 12))
25            i = i + 1
26
27    def __init__(self, master=None):
28        # Windowの初期設定を行う。
29        super().__init__(master)
30        # Windowの画面サイズを設定する。
31        # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
32        self.master.geometry("300x200")
33        self.showColorList()
34
35# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
36if __name__ == "__main__":
37    # Windowを生成する。
38    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
39    root = tk.Tk()
40    app = Application(master=root)
41
42    # Windowをループさせて、継続的にWindow表示させる。
43    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
44    app.mainloop()

以下の画像のように色の一覧を表示します。

まとめ

  • Tkinterで色を活用する場合、optionの設定で利用します。
  • OSによって利用できない色が存在するので、留意しておく必要がある。
  • Tkinterを用いて色の確認を行いたい場合、colorchooserを利用すると便利。

参考文献