gpt4 book ai didi

python - 如何设置字体大小或标签大小以适合所有设备

转载 作者:行者123 更新时间:2023-12-04 12:46:08 25 4
gpt4 key购买 nike

如何设置 kivy 字体大小或标签大小,使其适合所有手机设备屏幕? (fit by 方式不与边界、矩形、甚至屏幕重叠)

我知道 Kivy 中的按钮和其他一些小部件有 size_hint .此 size_hint没有给出预期的结果。

另外,设置 font_size可以做到这一点,但使用它很难自动化。现在关闭解决方案是通过设置和获取 Window.size以厘米为单位,并使用 font_size厘米。

提前致谢。

最佳答案

这实际上是一个有趣的问题。

通常,您将文本、字体、字体大小和限制文本的区域(kivy 标签中的 text_size)传递给渲染器并从中获取某种大小的纹理。您想要的是知道标签的纹理大小以获得字体大小。我想这在理论上是可能的,但是您需要在 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()

远非理想,但确实有效。

结果:

enter image description here

enter image description here

关于python - 如何设置字体大小或标签大小以适合所有设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com