Kivy:解决行为

Posted

技术标签:

【中文标题】Kivy:解决行为【英文标题】:Kivy: Resolution Behavior 【发布时间】:2015-10-03 19:36:52 【问题描述】:

如果我创建一个分辨率为 800x600 并设置全屏的 kivy 应用,并在 android 上运行此应用,分辨率是否会自动适合 android 的屏幕(无黑边)?

如果没有,

在任何设备上确保全屏显示的正确 python 方法是什么?

-------更新 9:41pm----------

我导入了 Kivy 的 metric 模块并使用 dp() 进行尺寸测量。

如果 GW.width != Windows.width: GW.size = (dp(Window.width), dp(Window.height))

使用 dp() 和 sp(fonts) 会确保在多个设备上正确地全屏缩放吗?

【问题讨论】:

【参考方案1】:

我怀疑将分辨率硬编码到设备中是否可行,除非用不同的分辨率测试您的应用。

我认为确保您的应用适合设备屏幕的最佳方法是利用您在 GUI 中使用的各种小部件的 size_hintpos_hint 属性。这通常会使您的小部件相对相对于它们的父级/容器来调整大小和位置。据我所知,“***”应用程序Window 本身将自动占据设备的全屏。因此,其中的所有内容都应该进行相对缩放和定位。 此外,当您确实指定小部件或字体的大小时,分别使用 'dp''sp' 可以大大确保在不同设备之间调整大小。示例:font_size: '20sp'Label(text='bleh', font_size='20sp') 这种方式也不需要导入metrics模块来使用(无论如何在kv文件中)

我自己,我倾向于使用size_hintpos_hint 来调整和定位我的很多小部件,我会使用'sp' 来设置字体大小,可能'dp' 只用于填充和间距等。

以下是相关文档的链接:

Kivy Metrics

Understanding size_hint

编辑:

针对您的额外问题,这看起来确实可行。但是,我个人更喜欢使用size_hintpos_hint,因为我发现它更直观且更简单。最好的了解方法就是进行实验。

【讨论】:

事实证明我对 dp 的看法是正确的。一切都可以在不使用它的情况下正确扩展。我承认,我也犯了一个愚蠢的错误,导致定位失败。现在我想知道......是否有任何使用 dp 显示完整分辨率的 kivy 应用程序?我不认为有,因为我的测试证明它会影响你的布局。

以上是关于Kivy:解决行为的主要内容,如果未能解决你的问题,请参考以下文章

Kivy 小部件行为异常

Kivy:删除右键创建的红点

Kivy 滚动条滚动方向与鼠标

在 Kivy 中将对象居中

带有boxlayout的kivy滚动视图

在kivy中的触摸事件上旋转对象