【发布时间】:2021-07-31 18:35:41
【问题描述】:
所以如果标签上只有三个字符,那么字体会很大,但是当你添加更多字符时,字体会减小。
【问题讨论】:
标签: python kivy kivy-language
所以如果标签上只有三个字符,那么字体会很大,但是当你添加更多字符时,字体会减小。
【问题讨论】:
标签: python kivy kivy-language
我不认为这个有内置功能,但我想出了这个。希望它能以某种方式帮助你。
.kv 文件
<MyLayout>:
label_id: label_id
BoxLayout:
orientation:"horizontal"
size: root.width, root.height
TextInput:
text: "hello"
size_hint: 0.1, 0.1
on_text: root.update_label(self.text)
Label:
id: label_id
size_hint: 0.1, 0.1
text: "hello"
font_size: 16 if self.text == '' else min(48,max(10/len(self.text) * 16, 16))
.py 文件
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.uix.label import Label
Builder.load_file("a.kv")
class MyLayout(Widget, App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def update_label(self, text):
self.ids['label_id'].text = text
class UiApp(App):
def build(self):
return MyLayout()
UiApp().run()
我制作了一个文本输入,以便您可以使用给定的文本输入和字体大小。 因此,当您将一些文本放入 TextInput 时,它会将其传递给 Label。当标签更新其文本时,font_size 将被重新计算。
我使用 min() 和 max() 函数的原因是:
我使用的 font_size 计算的主要“公式”是:
10/len(self.text) * 16
您的文本越大,font_size 越小。玩弄数字以获得适合您情况的完美 font_size。
【讨论】: