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()