【发布时间】:2014-04-18 20:41:32
【问题描述】:
问题是,如果我在 Windows 上创建一些东西并在 Android 上测试相同的东西,三星 S3 Gui 会在不同的地方显示不同的小部件。例如
1.我创建了一个小部件,将其大小设置为 800,600
2.包含一个大小为 100,100 的标签
3. 把它放在700,10的位置,这样它应该在右下角可见。
这在 Windows 测试环境下工作正常,但是当我使用 kivy 启动器将代码移动到三星 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()
【问题讨论】: