如何设置 kivy 字体大小或标签大小,使其适合所有手机设备屏幕?(适合的方式是不与边界、矩形、甚至屏幕重叠)
我知道 Kivy 中的按钮和其他一些小部件有size_hint. 这size_hint没有给出期望的结果。
另外,设置font_size可以解决这个问题,但很难自动化使用它。现在关闭的解决方案是通过设置和获取Window.sizein cm,并使用font_sizein cm。
提前致谢。
这实际上是一个有趣的问题。
通常,您将限制文本(text_size在 kivy 标签中)的文本、字体、字体大小和区域传递给渲染器,并从中获取某种大小的纹理。您想要的是了解标签的纹理大小以获得字体大小。我想这在理论上是可能的,但是你需要在 Kivy 中手动完成所有计算。
我们可以做一些解决方法吗?我们可以使用一些非常大的字体并缩放最终纹理以匹配给定的大小,而不是尝试计算字体大小。Image例如,可以使用 Kivy 的小部件轻松完成配给保持的扩展。概念验证 (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()
Run Code Online (Sandbox Code Playgroud)
远非理想,但确实有效。
结果:
小智 7
为了在调整窗口大小时缩放按钮或标签的字体,我在 kv 文件中使用font_size 并将self.width除以某个数字:
Label:
size_hint: 1, 0.1
text: "Some label text"
font_size: self.width/20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23171 次 |
| 最近记录: |