【问题标题】:GUI Display Layout same for all screens Kivy所有屏幕 Kivy 的 GUI 显示布局相同
【发布时间】: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()

【问题讨论】:

    标签: android python kivy


    【解决方案1】:

    听起来代码完全按照您的指示行事;将标签放置在以像素为单位的特定位置。在默认桌面窗口中,它恰好位于左下角,但在另一台设备上(或调整窗口大小后),它可能位于任何位置,具体取决于显示器的分辨率。

    您应该改用布局,以便按比例设置所有内容,并根据不同的屏幕形状进行调整。例如,您可以使用 AnchorLayout 将标签放置在右下角。

    【讨论】:

    • 我尝试了锚布局,甚至使用网格,但我找不到如何做到这一点,因为在我真正更大的程序中,我有很多这样的小部件,我需要将它们放在容器小部件上......请看看我在锚布局上创建的问题 stackoverflow.com/questions/23155905/…>
    • 对你来说可能看起来是新手问题,但我在 gridlayout 上提出了类似的问题。 stackoverflow.com/questions/23156023/…>
    • 另外是否可以在不使用布局和更改查找不同屏幕的分辨率并以某种方式乘以分辨率值以找到小部件在该屏幕中的相对位置的情况下执行此操作?
    • 当然你可以在没有布局的情况下做到这一点,但实际上你只是用你的建议重新发明它们。
    • 我没收到?如果我们可以在没有 Layout 的情况下做到这一点,我们该怎么做呢?如何在所有设备中保持屏幕相同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多