你能用kivy获得设备的物理尺寸吗?

时间:2016-06-16 11:04:43

标签: kivy

有谁知道Kivy如何用不同的字体呈现文字?

我的文字标签为16sp。

在屏幕尺寸(1024,552)和(2048,1536)的平板电脑上,它完美运行(宽高比分别为1.855和1.333) enter image description here

在屏幕尺寸为(1280,720)(比率为1.778)的电脑上,它也能完美显示,但在具有此屏幕尺寸的手机上,字母会被截断 enter image description here

这里唯一的区别是设备的物理尺寸。因此看来,Kivy文本不是根据基于像素的某种算法渲染的,而是考虑到屏幕的物理尺寸

有没有办法确定Kivy的实际尺寸?因此允许我相应地调整字体大小。如果我使用较小的(10sp)字体大小,则手机(小型设备)上的文字会正确显示,但在较大的设备上显示的文字太小。

4 个答案:

答案 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