我的kivy程序在安卓上总是旋转屏幕

2 投票
1 回答
2800 浏览
提问于 2025-05-01 02:10

最近我尝试了kivy,但遇到了一些问题。谢谢大家的帮助。

首先,我的kivy程序在安卓上运行时总是会旋转屏幕。通常情况下,安卓的状态栏是在顶部的,但当我运行kivy时,它却跑到了右边。

我的安卓手机上开启了屏幕旋转功能,但当我转动手机时,kivy程序的方向并没有改变。

我还尝试通过设置Window.rotation = 90来旋转窗口,但状态栏的位置还是没有变化。

这个程序非常简单:

main.py:

from kivy.app import App
from kivy.uix.widget import Widget
class PongGame(Widget):
    pass


class PongApp(App):
    def build(self):
        return PongGame()


if __name__ == '__main__':
    PongApp().run()

pong.kv:

<PongGame>:    
    canvas:
        Rectangle:
            pos: self.center_x - 5, 0
            size: 10, self.height

    Label:
        font_size: 70  
        center_x: root.width / 4
        top: root.top - 50
        text: "0"

    Label:
        font_size: 70  
        center_x: root.width * 3 / 4
        top: root.top - 50
        text: "0"

谢谢。

暂无标签

1 个回答

5

首先,我的kivy程序在安卓上运行时总是会旋转屏幕。通常安卓的状态栏是在顶部,但当我运行kivy时,它却移到了右边。

这个问题可以在buildozer.spec文件中解决,只需要把方向设置那一行改成orientation = all。你也可以查看其他行的注释,了解更多选项。

你还可以通过直接调用安卓的api来设置更多的方向选项(比如可以选择遵循用户的系统设置等),这可以用pyjnius来实现。我这里有一些示例代码,可以查看。类似的功能可能也会加入到plyer中。

如果你直接使用python-for-android,方向选项是可以作为命令行参数传递给build.py的。我不太记得具体的内容了,但你可以查阅文档——不过我还是推荐使用buildozer。

撰写回答