Tkinterの色の使い方とは?活用例から色の一覧をまとめて紹介!?
今回はTkinterの色の使い方に関して解説しながら、活用例、色の一覧をまとめて紹介いたします。色選びに悩んでいた、活用例を通して学びたい方へおすすめです。是非最後までご確認ください。
執筆者 - おすすめの記事3選
そもそもどこで色が使えるの?
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, optionmenu | background="red" , bg="red" |
foreground, fg | 文字色を変更する | radiobutton, button, listbox, entry, text, scrolledtext, labelframe, label, checkbutton, menubutton, spinbox, scale, optionmenu | foreground="red" , fg="red" |
highlightbackground, highlightcolor | それぞれフォーカスが外れた時の囲い線の色, フォーカスがあてられた時の囲い線の色 | canvas, listbox, entry, text, scrolledtext, label, frame, toplevel, scrollbar, scale, spinbox | highlightbackground="red" , highlightcolor="red" |
disabledbackground, disabledforeground | stateが'disabled'の場合にそれぞれ背景色、文字列色を変更する。 | entry, spinbox | disabledbackground="red" , disabledforeground="red" |
activebackground, activeforeground | それぞれクリックした時の背景色、文字列色を変更する | button, checkbutton | activebackground="red" , activeforeground="red" |
readonlybackground | stateが'readonly'の場合に背景色を変更する | entry, spinbox | readonlybackground="red" |
selectbackground, selectforeground | それぞれ選択状態時の背景色、文字列色を変更する | canvas, entry, text, scrolledtext, spinbox, listbox | selectbackground="red" , selectforeground="red" |
insertbackground | カーソルの色を変更する | entry, text, scrolledtext, spinbox | insertbackground="red" |
buttonbackground | ボタンの背景色を変更する | spinbox | buttonbackground="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を利用すると便利。