kivyでグローバルフォントサイズを設定する

Source python properties kivy font-size

Pythonまたはkivy言語を使用して、kivyでグローバルフォントサイズ(ボタンとラベルなど)を設定するための推奨される方法は何ですか?

ウィンドウのサイズに比例してグローバルフォントサイズ設定を動的に変更する良い方法は何ですか?
推奨答え
templateを使用して、カスタムラベルを作成します。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget 
from kivy.properties import ObjectProperty, NumericProperty

kv = '''
[[email protected]]:
    text: ctx.text if hasattr(ctx, 'text') else ''
    font_size: 24
    markup: True

<MyWidget>:
    id: f_wid
    BoxLayout:
        size: f_wid.size
        orientation: 'vertical'
        MyLabel:
            text: "Hello world 1"
        MyLabel:
            text: "Hello world 2"
        MyLabel:
            text: "Hello world 3"
        MyLabel:
            text: "Hello world 4"   
        MyLabel:
            text: "Hello world 1"
        MyLabel:
            text: "Hello world 2"
        MyLabel:
            text: "Hello world 3"
        MyLabel:
            text: "Hello world 4"   
'''
Builder.load_string(kv)

import kivy
kivy.require('1.7.1') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.widget import Widget

class MyWidget(Widget):
    pass

class MyApp(App):
    def build(self):
        return MyWidget()

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

フォントサイズを画面サイズに依存させるには、固定値を使用する代わりに、self.heighを使用して計算します。
[[email protected]]:
    text: ctx.text if hasattr(ctx, 'text') else ''
    font_size: self.height/2
    markup: True

UPDATE

別のアプローチは、#:set構文を使用して変数を設定することです。
kv = '''
#:set default_font_size "36sp"
<MyWidget>:
    id: f_wid
    BoxLayout:
        size: f_wid.size
        orientation: 'vertical'
        Label:
            text: "Hello world 1"
            font_size: default_font_size
        Label:
            text: "Hello world 2"
            font_size: default_font_size
        Label:
            text: "Hello world 3"
            font_size: default_font_size
        Label:
            text: "Hello world 4"   
            font_size: default_font_size
        Label:
            text: "Hello world 1"
            font_size: default_font_size
        Label:
            text: "Hello world 2"
            font_size: default_font_size
        Label:
            text: "Hello world 3"
            font_size: default_font_size
        Label:
            text: "Hello world 4"   
            font_size: default_font_size
'''
Builder.load_string(kv)
その他答え 1
<Label>:
    font_size: dp(20)
    font_name: 'path/to/funcy/font.ttf'

Labelをベースとして使用するウィジェットのフォント名とフォントサイズをグローバルに設定します(TextInputおよび他のいくつかのウィジェットは使用しません)。
その他答え 2
この質問は古いことは知っていますが、「ウィンドウのサイズに比例してグローバルフォントサイズの設定を動的に変更する」という質問がありました。

同様の問題のために、私は AutoSizedLabelを作成しました
class TestApp(App):
    def build(self):
        return AutoSizedLabel(text="crazy stuff", ratio=0.5)

それはpipインストール可能です:
pip install kivyoav

関連記事

Railsプリペアドステートメント構文でWHEREINを使用する
Angular 1.2:ng-bind-htmlはimgのsrc属性を削除します
オプションで、Pythonでelseステートメントなしでリストに1つの要素を含めることはできますか?
パンダプロットの何が問題になっていますか?
特定の値の関数を作成するときのpython / numpyのAttributeError