Kivyで使える単位

2015/10/27

Python 2.7.9, Kivy 1.9.0

何も単位を指定しないときはピクセル(px)。でもピクセルは端末によって解像度が違いすぎて使いにくい。

  • pt ・・・ 1pt = 1/72インチ
  • mm ・・・ ミリメートル
  • cm ・・・ センチメートル
  • in ・・・ インチ
  • dp ・・・ 画面密度が160dpiの時の1px
  • sp ・・・ ユーザフォントサイズに準じたdp

いずれも画面解像度に依存しない物理サイズ。
spは端末のフォントサイズを基準にしているので、変に小さくならず良いっぽい。公式推奨。


Metrics — Kivy 1.9.1-dev documentation
http://kivy.org/docs/api-kivy.metrics.html

Kv

Kvファイル内でこれらの単位を使う方法は2つ。

文字列として単位を書く
Label:
    font_size: '12sp'
関数を使ってpx換算値に変換
Label:
    font_size: sp(12)

ptならpt()、dpならdp()、などなど。


Python

Python側で使うにはこんな感じ。

from kivy.metrics import sp
px = sp(24)


サンプル
# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

from kivy.metrics import sp

class MyApp(App, BoxLayout):
    def build(self):
        px = sp(24)
        btn = Button(text=str(px),font_size=px)
        self.add_widget(btn)
        return self

if __name__ == "__main__":
    MyApp().run()