是否有一种方法来创建一个kivy标签,根据它有多少字符来改变字体大小



如果标签上只有三个字符,那么字体大小会非常大,但是随着添加更多字符,字体大小会变小。

我不认为这是一个内置的功能,但我想出了这个。希望它能对你有所帮助。

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

我已经创建了一个textput,以便您可以使用给定的文本输入和字体大小。当你在TextInput中放入一些文本时,它会把它传递给Label。当标签更新其文本时,将重新计算font_size。

使用min()和max()函数的原因是:

  1. 当你有一个非常大的字符串时,font_size会变得非常非常小
  2. 当你的字符串中只有1或2个字符时,font_size会变得很大

主要"配方"对于我所使用的font_size的计算方法为:

10/len(self.text) * 16

字体越大,font_size就越小。使用数字来获得适合您的情况的完美的font_size。

最新更新