pythonまたはkivy言語を介して、kivyでグローバルフォントサイズ(つまり、ボタンとラベル)を設定するための推奨される方法は何ですか?
ウィンドウのサイズに比例してグローバル フォント サイズ設定を動的に変更する良い方法は何ですか?
pythonまたはkivy言語を介して、kivyでグローバルフォントサイズ(つまり、ボタンとラベル)を設定するための推奨される方法は何ですか?
ウィンドウのサイズに比例してグローバル フォント サイズ設定を動的に変更する良い方法は何ですか?
<Label>:
font_size: dp(20)
font_name: 'path/to/funcy/font.ttf'
Label をベースとして使用するウィジェットのフォント名とフォント サイズをグローバルに設定します (TextInput と他のいくつかのウィジェットは使用しません)。
テンプレートを使用してカスタム ラベルを作成します。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty, NumericProperty
kv = '''
[MyLabel@Label]:
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
。
[MyLabel@Label]:
text: ctx.text if hasattr(ctx, 'text') else ''
font_size: self.height/2
markup: True
アップデート
別のアプローチは、 #: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)
この質問が古いことは知っていますが、「ウィンドウのサイズに比例してグローバルフォントサイズ設定を動的に変更する」について質問しました。
同様の問題について、私はAutoSizedLabelを作成しました
class TestApp(App):
def build(self):
return AutoSizedLabel(text="crazy stuff", ratio=0.5)
これは、次の方法で pip インストール可能です。
pip install kivyoav