有谁知道Kivy如何用不同的字体呈现文字?
我的文字标签为16sp。
在屏幕尺寸(1024,552)和(2048,1536)的平板电脑上,它完美运行(宽高比分别为1.855和1.333)
在屏幕尺寸为(1280,720)(比率为1.778)的电脑上,它也能完美显示,但在具有此屏幕尺寸的手机上,字母会被截断
这里唯一的区别是设备的物理尺寸。因此看来,Kivy文本不是根据基于像素的某种算法渲染的,而是考虑到屏幕的物理尺寸
有没有办法确定Kivy的实际尺寸?因此允许我相应地调整字体大小。如果我使用较小的(10sp)字体大小,则手机(小型设备)上的文字会正确显示,但在较大的设备上显示的文字太小。
答案 0 :(得分:2)
是的,您可以使用kivy来确定屏幕的物理尺寸- 您可以简单地使用以下模块:
({from kivy.core.window import Window
)
,然后通过编写以下代码确定尺寸:
({Window.size
)
签出此代码(此代码确定简单标签上的屏幕物理尺寸):
⬇️⬇️
from kivy.app import App
from kivy.uix.label import Label
from kivy.core.window import Window
class MyApp(App):
def build(self):
window_sizes=Window.size
return Label(text="screen sizes= "+str(window_sizes))
MyApp().run()
答案 1 :(得分:1)
可以获取屏幕尺寸,但您需要安装plyer
,然后再打包patch,以便您可以访问信息。
或者只使用普通pyjnius
并使用autoclass
访问android.util.DisplayMetrics
。
答案 2 :(得分:0)
根据我的理解,您在多个设备上正确显示文本时遇到问题。现在,我不认为你可以通过Kivy本身获得设备的实际尺寸,但是使用普通的旧python,你可以。
Python中的一个例子:
import gtk
window = gtk.Window()
screen = window.get_screen()
print "screen size: %d x %d" % (
gtk.gdk.screen_width(),gtk.gdk.screen_height())
上面的代码将打印屏幕高度和宽度或分辨率,供您使用。
将它们存储在变量中:
import gtk
window = gtk.Window()
screen = window.get_screen()
ScreenWidth = gtk.gdk.screen_width()
ScreenHeight = gtk.gdk.screen_height()
# And to prove it worked (You would not want to include this part in code
#########################################################################
print str(ScreenWidth) + 'x' + str(ScreenHeight)
现在您已经拥有了这些变量,您可以在.kv文件中使用它们,从python文件中提取它们,或者以某种方式将整个函数直接实现到您的Kivy代码中。
答案 3 :(得分:0)
来自:https://kivy.org/docs/api-kivy.metrics.html我们了解到' sp'是与比例无关的像素大小。因此,它已包含像素密度,并且字体大小在每个设备上显示相同(至少应该)。
为什么你的字体被剪裁的原因是因为容器的大小。你也应该给出所需的大小,比如这个例子(注意:如果你想要一个高度,你必须包括size_hint_y:None参数)
TextInput:
id: text_input
size_hint_y: None
height: '30sp'
multiline: False