在 Kivy 中针对不同设备的应用

Posted

技术标签:

【中文标题】在 Kivy 中针对不同设备的应用【英文标题】:Application in Kivy for different devices 【发布时间】:2017-07-17 20:18:45 【问题描述】:

前提:我是编程领域的初学者。

我想创建我的第一个应用程序,它应该在不同的设备上运行,即具有不同屏幕尺寸的智能手机或平板电脑。

主窗口应自动适应设备的高度。我在这个论坛上发现了两种控制窗口大小的方法。

通过第一个,我可以确定窗口大小:

from kivy.config import Config
Config.set('graphics', 'width',  200)
Config.set('graphics', 'height', 100)

但这是一个具有常量值的静态方法。或者,我可以将窗口设置为全屏:

from kivy.config import Config
Config.set('graphics', 'fullscreen', 1)

这样窗口会覆盖整个显示,并改变窗口和里面的小部件的比例......

有没有办法获取显示高度并使用它来构建我的窗口?

【问题讨论】:

设置小部件相对于Window.heightWindow.width 的大小,以便用户界面在不同的屏幕分辨率下看起来相同。 是否可以将 Window.height 设置为最大可用高度(屏幕的高度)? 您想要一个占据整个显示屏的全屏应用? 我想将窗口高度设置为最大高度,然后根据它计算宽度(例如:宽度 = 高度 *2 / 3)。我的意思是:我能以某种方式获得必须显示应用程序的屏幕尺寸(英寸、像素、...)吗? 【参考方案1】:

一种方法是检查平台并尝试根据平台获取维度。例如在 linux 上你可以运行 xdpyinfo | grep dimensions 来获取屏幕分辨率或在 windows 上 from win32api import GetSystemMetrics 用于获取分辨率或在 android 上你可以我们 pyjnius 到 Get screen dimensions in pixels

例如,对于 linux 你可以

import subprocess

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.utils import platform

class Main(Widget):
    def __init__(self):
        super(Main, self).__init__()
        if platform == 'linux':
            command = "xdpyinfo  | grep -oP 'dimensions:\s+\K\S+'"
            ps = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
            output = ps.communicate()[0]
            self.add_widget(Label(text=output))


class MyApp(App):
    def build(self):
        return Main()

MyApp().run()

【讨论】:

以上是关于在 Kivy 中针对不同设备的应用的主要内容,如果未能解决你的问题,请参考以下文章

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

Kivy 相机代码无法在 android 设备上运行

在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?

在移动设备上运行 apk 后,python kivy android 应用程序崩溃

如何在 android 设备上运行我的 kivy windows 应用程序

在 XIB 中查看未针对不同设备调整大小