2017-11-02 1 views

답변

2

나는 안드로이드 장치의 방향을 인식하여 이것을하는 방법을 찾지 못했습니다. 그러나 다음 프로그램은 창의 높이와 너비를 비교하여 내용을 변경합니다. 프로그램의 라벨이 동적으로 변경되므로 너비가 더 커지면 (가로 모드) 레이블의 높이가 더 높을 때 (세로 모드) 라벨의 텍스트가 달라집니다. 현재 Windows에서 작동하지만 안타깝게도 Android 시스템을 구축 할 Linux 시스템이 없습니다. 이론적으로는 효과가 있지만 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_orientation 기능을 사용할 수 있습니다.

+0

예, 알고 있었지만 현재 화면이 바뀌거나 방향에 따라 레이아웃이 바뀌도록 만들 수 있다면 휴대 전화의 계산기가 과학적으로 어떻게 바뀌 었는지 알 수있었습니다. 당신은 풍경 모드로 전화를 플립? 그게 무슨 뜻인지 –

+0

@ HussamAl-hassan 그때는 아주 좋은 질문입니다. 나는 전에 이것을 시험해 보지 않았지만 그것을 찾을 것입니다. 우리보다 먼저 답을 찾으면 여기에 게시하십시오. –

+0

좋아요, 소리가 아주 좋아요, 아픈 답을 찾으세요. –