问题是如果我在Windows上创建一些东西并在Android上测试同样的东西三星S3 Gui在不同的地方显示不同的小部件。例如
1.我创建了一个小部件,其大小为800,600
2.包括尺寸为100,100的标签
3.将它放在700,10位置,这样它应该在右下角可见。
这在Windows测试环境中运行正常但是当我使用kivy启动器将代码移动到Samsung S3时,它会在同一位置显示标签。
我在http://kivy.org/docs/api-kivy.metrics.html上阅读了matix doc并在代码中使用了以下内容
import os
os.environ['KIVY_METRICS_DENSITY'] = '1'
os.environ['KIVY_DPI'] = '96'
这是Windows中的值,但似乎有效。三星S3中的这些值的原始值是 KIVY_METRICS_DENSITY = 2 KIVY_DPI = 320 Window.size = 1028X728(我认为)
然后我将dp添加到位置和大小的值,但在Android上仍然是相同的。 我知道我错过了什么。有人可以建议吗?
以下是示例代码:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.widget import Widget
import os
os.environ['KIVY_METRICS_DENSITY'] = '1'
os.environ['KIVY_DPI'] = '96'
class Container(Widget):
def __init__(self, **kwargs):
super(Container, self).__init__(**kwargs)
self.size = '800dp','600dp'
label = Label(text="Am i A Label ?")
label.size = '100dp','100dp'
label.pos = '700dp','10dp'
self.add_widget(label)
class MyJB(App):
def build(self):
parent = Container()
return parent
if __name__ == '__main__':
MyJB().run()
答案 0 :(得分:3)
这听起来像代码完全按照你所说的去做;将标签放在像素的特定位置。在默认桌面窗口中,这恰好是左下角,但在另一台设备上(或在调整窗口大小后),它可能在任何地方,具体取决于显示器的分辨率。
您应该使用布局,以便按比例设置所有内容并调整为不同的屏幕形状。例如,您可以使用AnchorLayout将标签放在右下角。