Kivyのcolor設定について説明します。カラーは基本的にRGBA指定になりますがRGB、16進数、HSL、HSVにも対応しています。今回はその中でRGBAと16進数の指定方法とRGBAが使えない場合の対処方法を書いてます。
RGBAを使う
Kivyのcolor設定のデフォルトはRGBAになります。RGBAは赤・緑・青で0~255の数値で色を表します。Aはアルファ値で0~1の間で指定します。
- R(赤):0~255
- G(緑):0~255
- B(青):0~255
- A(アルファ):0~1
不透明度とは、色がどれだけ透けて見えるかを示す度合いになります。
1:完全に不透明(透明度なし)
0:完全に透明(見えなくなる状態)
例えば、color: 1, 0, 0, 0.5と設定すると、赤が50%透けた色になります。
Label:
color: 1, 0, 0, 0.5
RGBAカラーが反映されない
カラー指定でRGBA値が0と1しか使えない場合があります。原色などの0と1で表す色は使えるんですが、数値が大きくなると指定した色が適用されない状態になります。
Label:
color: 42, 100, 89, 1 # これは適用されない
Button:
text: 'button'
background_color: 37, 170, 118, 1 # これは適用されない
Window.clearcolor = (42, 100, 89, 1) # これは適用されない
canvas.before:
Color:
rgba: 42, 100, 89, 0.3 # これは適用されない
RGBAが反映されない場合の対処方法
これらを問題を解消するには、
RGBの数値を255で割ると指定した色になります。
Label:
color: 42/255, 100/255, 89/255, 1 # 255で割る
Button:
background_color: 37/255, 170/255, 118/255, 1 # 255で割る
Window.clearcolor = (42/255, 100/255, 89/255, 1) # 255で割る
canvas.before:
Color:
rgba: 42/255, 100/255, 89/255, 0.3 # 255で割る
淡い色などは16進数で指定した方が適している場合があります。
colorを16進数で指定する
カラーを16進数で指定するにはUtilsクラスのget_color_from_hexメソッドを使います。
# pyファイル
from kivy.utils import get_color_from_hex
Window.clearcolor = get_color_from_hex("#d8bfd8") #16進数で指定
kvファイルの場合はrgbaから16進数に変換する必要があります。
# kvファイル
#:import hex kivy.utils.get_color_from_hex
Label:
color: hex("#d8bfd8") # 16進数
# kvファイル
#:import hex kivy.utils.get_color_from_hex
canvas.before:
Color:
rgba: hex("#d8bfd8")
kvファイルのインポート文の書き方はpyファイルと異なります。冒頭の # はコメントではないので付けてください。
#:import <エイリアス> kivy.utils.get_color_from_hex
「hex」の部分はモジュール名に別名を付けることができるので、任意の名前を付けてください。この名前で16進数の指定をします。
hex("#d8bfd8") # 「hex」は任意の名前
Comment