kivy를 사용하여 응용 프로그램을 만들면 원하는 모든 것을 얻을 수 있지만 화면을 세로에서 가로로 회전하면 위젯이 서로 충돌하기 시작합니다. 이것이 일어나지 않도록하는 좋은 방법은 무엇입니까?python/kivy를 사용하여 화면 회전을 설명하기 위해 위젯 배치를 처리하는 좋은 방법은 무엇입니까?
첨부 된 예제에서 설정 버튼을 내 머리글 레이블 위젯에 바인딩 할 수 있었지만 스크롤 할 때 내 스크롤 뷰를 가져 오지 못해 회전 할 때 X 공간을 남겨 둡니다. 라벨의 하단.
파이썬 :
class First_Screen(Screen):
def __init__(self, **kwargs):
super(First_Screen, self).__init__(**kwargs)
list_of_buttons = [
'button1',
'button2',
'button3',
'button4',
'button5',
'button6 ',
'button7',
'button8',
]
class My_Grid(FloatLayout, ScrollView):
grid = ObjectProperty(None)
def on_grid(self, *args):
for btn in list_of_buttons:
btn = Button(
text = btn,
)
btn.bind(on_press= First_Screen.print_message)
self.grid.add_widget(btn)
def print_message(self):
print ('Congratulations! You have clicked a button!')
class ScreenManagement(ScreenManager):
pass
class Stack_Overflow(App):
def build(self):
sm = ScreenManager(transition = FadeTransition())
sc0 = First_Screen(name = 'first_screen')
sm.add_widget(sc0)
return sm
if __name__ == '__main__':
Stack_Overflow().run()
KV :
ScreenManagement:
First_Screen:
<[email protected]+Image>:
<First_Screen>:
name: 'first_screen'
Label:
id: header
text: 'header'
pos_hint: ({'left' : 1, 'top' : 1})
size_hint: (1,None)
height: dp(50)
canvas.before:
Color:
rgba: (.6, .6, .6, 1)
Rectangle:
pos: self.pos
size: self.size
ScrollView:
size_hint: (1,.8)
pos_hint: ({'center_x' : .5, 'center_y' : .5})
My_Grid:
grid: grid
GridLayout:
id: grid
cols: 1
size_hint_y: None
row_default_height: "40dp"
height: self.minimum_height
ImageButton:
id: settings
size_hint: None, None
height: dp(30)
width: dp(30)
pos: header.x, header.y + 10
pos_hint: {'right': 1}
source: 'settings_black.png'
감사합니다!
내 설정 버튼은 실제로 내가 원하는대로 정확하게 작동합니다. 나는 그것이 전화를 돌릴 때 머리말 꼬리표의 중앙에 아직도 중심에 남아있을 때 이렇게 그것을 설치해달라고했다.내 주요 문제는 내 scrollview 위젯을 내 머리글 레이블 아래에 일정량의 픽셀을 시작하는 방법을 알아낼 수 없다는 것입니다. 대신 전화가 회전 될 때 머리글 레이블과 충돌하지만 설정 단추는 정확히 어디에 머물러 있는지 해야한다. 내가 header.x와 header.y 내 scrollview의 위치를 설정했는데 작동하지 않는 것, 그리고 내가 게시 한 예제는 내가 할 수있는 가장 가까운 것입니다 – Indeciski
@ Indeciski 핑 – KeyWeeUsr
BoxLayout에 넣는 것은 작동하는 것 같았다 잘. FloatLayout을 사용하는 한, 단추를 만든 다음 전화를 돌리면 찌그러 지거나 어색해 보입니다. 이것은 RelativeLayout을 사용하여 고정 된 것으로, FloatLayout과 같은 역할을한다고 말합니다. 즉, 자식 위젯이 레이아웃을 기준으로 배치된다는 점만 빼고, 어떤 문서를보아야하는지 알려줄 수 있습니까? 대안으로 체크 아웃 할 수 있습니다. 어떤 것이 나를 위해 더 잘 돌아가는지 보아라. 어쨌든 귀하의 도움과 자세한 설명에 많은 감사드립니다! – Indeciski