在 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.height
和Window.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 中针对不同设备的应用的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?
在移动设备上运行 apk 后,python kivy android 应用程序崩溃