Python+Kivyサンプルコード

Kivyのcolor設定でRGBAと16進数を使う【kv言語】

この記事は約3分で読めます。

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

タイトルとURLをコピーしました