Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Kivy-通过手机屏幕方向改变屏幕(android)_Python_Kivy - Fatal编程技术网

Python/Kivy-通过手机屏幕方向改变屏幕(android)

Python/Kivy-通过手机屏幕方向改变屏幕(android),python,kivy,Python,Kivy,到目前为止,我还没有在互联网上找到任何东西,我想知道的是,根据手机屏幕的方向(横向或纵向)以及如何更改kivy的当前屏幕是否可能。或者至少是一个教程的链接,因为我自己找不到。我还没有找到一种方法来识别android设备的方向。但是,下面的程序通过比较窗口的高度和宽度来更改其内容。程序的标签会动态变化,因此当宽度较大(横向模式)时,其标签的文本与高度较大(纵向模式)时的文本不同。目前它可以在Windows上运行,但不幸的是,我没有Linux系统来构建android版本。从理论上讲,它应该有效,但我

到目前为止,我还没有在互联网上找到任何东西,我想知道的是,根据手机屏幕的方向(横向或纵向)以及如何更改kivy的当前屏幕是否可能。或者至少是一个教程的链接,因为我自己找不到。

我还没有找到一种方法来识别android设备的方向。但是,下面的程序通过比较窗口的高度和宽度来更改其内容。程序的标签会动态变化,因此当宽度较大(横向模式)时,其标签的文本与高度较大(纵向模式)时的文本不同。目前它可以在Windows上运行,但不幸的是,我没有Linux系统来构建android版本。从理论上讲,它应该有效,但我不是100%确定

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.graphics import Rectangle, Color


class MainScreen(FloatLayout, Label):

    """MAIN WINDOW CLASS"""

    def __init__(self, **kwargs):
        super(MainScreen, self).__init__(**kwargs)

        with self.canvas.before:
            Color(0.988, 0.725, 0.074, 1, mode='rgba')
            self.rect = Rectangle(pos=self.pos, size=self.size)
        self.bind(size=self.update_rect)

        self.titlos = Label(text="",
                            bold=True,
                            text_size=(None,None),
                            font_size="20sp",
                            pos_hint={'center_x': 0.5, 'center_y': .85},
                            size_hint_y=None,
                            size = self.size,
                            height=self.texture_size[1],
                            halign="center",
                            valign = "middle",
                            color=(0.055, 0.235, 0.541, 1))

        self.add_widget(self.titlos)
        self.bind(size=self.update_orientation)

    def update_rect(self, *args):
        """FUNCTION TO UPDATE THE RECATANGLE OF CANVAS TO FIT THE WHOLE SCREEN OF MAINSCREEN ALWAYS"""
        self.rect.pos = self.pos
        self.rect.size = self.size

    def update_orientation(self, *args):
        """FUNCTION TO UPDATE THE SCREEN CONTENTS WHEN THE WINDOW SIZE CHANGES"""
        if self.parent.size[1] > self.parent.size[0]:
            self.titlos.text = "This is\nPortrait\nOrientation"
        else:
            self.titlos.text = "This is Landscape Orientation"

        # This is just for checking. Not essential to the program.
        print("Width:", self.parent.size[0], ", Height:", self.parent.size[1])



class main(App):
    """BUILDING THE APP"""
    def build(self):
        return MainScreen()

if __name__ == "__main__":
    main().run()

你可以使用
update\u orientation
功能来包括当方向改变时你需要改变的任何内容。

是的,我知道,但我的意思是如果我可以使当前屏幕改变,或者布局根据方向改变,您知道当您将手机切换到横向模式时,手机的计算器是如何变为科学计算器的吗?我就是这么想的mean@HussamAl-哈桑:那是个很好的问题。我以前没试过,但我保证会查的。如果你在我们面前找到了答案,请把它贴在这里。@HussamAl hassan我找到了一种“非正统”的方法,可以在方向改变时改变屏幕内容。该程序实际上并不检查方向是纵向还是横向,而是比较屏幕的高度和宽度。我还没有在安卓系统上试用过,但它可以在Windows上运行。你对它感兴趣吗?我可以在这里发布,也许你可以在android上查看。当然,如果你需要的话,可以发布can@HussamAl-哈桑看一看