有人知道Kivy是怎么用不同的字体渲染文本的吗?
我在16 sp有带文本的标签。
在屏幕尺寸(1024,552)和(2048,1536)的平板电脑上,它可以完美地工作(宽/高比分别为1.855和1.333)x1c 0d1x
在屏幕大小为(1280,720)(比例为1.778)的PC上,它也能完美地显示,但在屏幕大小为这种大小的手机上,字母被截断为
这里唯一的区别是设备的物理大小。因此,Kivy文本不是根据一些基于像素的算法渲染的,而是考虑到了屏幕的物理大小
是否有任何方法可以确定Kivy的物理大小?因此允许我相应地调整字体大小。如果我使用较小的(10 sp)字体大小,文本在手机(小型设备)上显示正确,但在较大的设备上显示太小。
6条答案
按热度按时间hgtggwj01#
是的,你可以用kivy确定屏幕的物理尺寸-你可以简单地使用这个模块:
(
from kivy.core.window import Window
)然后通过以下公式确定大小:
(
Window.size
)查看此代码(此代码确定简单标签上的屏幕物理尺寸):
⬇️⬇️
xesrikrc2#
获得屏幕大小是可能的,但您需要安装
plyer
,并在打包之前也安装patch,以便您可以访问信息。或者只使用普通的
pyjnius
并通过autoclass
访问android.util.DisplayMetrics
。r55awzrz3#
我最后做的是最大化我的窗口以获得允许的最大非全屏大小,然后阅读该大小。我实际上使用它在屏幕上居中一个较小的窗口:
请注意,通过首先最大化窗口,我得到的是最大允许大小,减去任何操作系统的工具栏等,即,当您按下最大化按钮时窗口的大小。
qxgroojn4#
据我所知,您在多个设备上正确显示文本时遇到了问题。现在,我不认为您可以通过Kivy本身获得设备的实际尺寸,但使用普通的旧Python,您可以。
Python中的一个例子:
上面的代码将打印出屏幕的高度和宽度,或分辨率,供您使用。
要将它们存储在变量中:
现在你已经有了这些变量,你可以在你的.kv文件中使用它们,通过从python文件中提取它们,或者以某种方式直接在你的Kivy代码中实现整个函数。
okxuctiv5#
从https://kivy.org/docs/api-kivy.metrics.html中我们得知“sp”是与比例无关的像素大小,因此它已经包含了像素密度,并且字体大小在每个设备上都是相同的(至少应该是相同的)。
字体被裁剪的原因是因为容器的大小。你也应该给予所需的大小,就像这个例子(注意:如果你想要一个特定的高度,你必须包括size_hint_y:无参数)
wz1wpwve6#
下面是另一个解决方案,它在Android或iOS上测试/运行时将应用设置为全屏,但在桌面上测试时使用合理的大小(602,1024):