これは実際には興味深い質問です。
通常、テキスト、フォント、フォントサイズ、およびレンダラーにテキスト(text_size
のkivyラベル)を制限し、そこからいくらかのサイズのテクスチャを取得する領域を渡します。あなたが望むものは、フォントサイズを得るためにラベルのテクスチャサイズを知ることです。理論的には可能ですが、Kivyではすべての計算を手動で行う必要があります。
回避策を講じてもいいですか?フォントサイズを計算するのではなく、いくつかの非常に大きなものを使用して、最終的なテクスチャをスケールして、指定されたサイズに合わせることができます。例えば、KivyのImage
ウィジェットを使って、配給維持によるスケーリングを簡単に行うことができます。実証実験(Python 3):
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.uix.label import Label
class MyLabel(Image):
text = StringProperty('')
def on_text(self, *_):
# Just get large texture:
l = Label(text=self.text)
l.font_size = '1000dp' # something that'll give texture bigger than phone's screen size
l.texture_update()
# Set it to image, it'll be scaled to image size automatically:
self.texture = l.texture
class RootWidget(BoxLayout):
pass
class TestApp(App):
def build(self):
return MyLabel(text='Test test test')
if __name__ == '__main__':
TestApp().run()
理想から離れていますが、仕事はありません。
結果:
おかげで、これはアウト・オブ・ボックスです。私はPython 2で同じコンセプトを試しましたが、動作していないように見えました。私のコードは投稿にあります。あなたのもの: 'on_text'または' on_texture'ですか? – Arief
@簡単なコードはありません。私はちょうどチェックして、それはPython 2でも動作します - 何も変更せずに。 'on_text' - クラス' Image'のメンバーではありませんが、 'text'プロパティが変更されたときに自動的に呼び出される関数です。詳細は、この[link](https://kivy.org/docs/api-kivy.properties.html#observe-using-on-propname)を参照してください。 –