Проблема выравнивания виджетов Kivy в макете - PullRequest
0 голосов
/ 02 октября 2019

Только начал входить в Киви, столкнулся с некоторой проблемой выравнивания.

Пожалуйста, посмотрите на изображение ниже, я пытаюсь настроить кнопку иконка погоды , отмеченная красным кружком в местегде он отмечен синим кружком.

Вот код файла * .kv:

BoxLayout:
        orientation:'horizontal'
        BoxLayout:
            orientation:'horizontal'
            StackLayout:
                orientation:'tb-rl'
                canvas:
                    Color:
                        rgb: [.3, .320, .380]
                    Rectangle:
                        pos: self.pos
                        size: self.size
                Button:
                    id:current_temperature
                    text: root.display_current_temperature()
                    font_size:40
                    size_hint: [None, None]
                    size:[200,50]
                Button:
                    id:current_location
                    text: root.display_location()
                    font_size:15
                    size_hint: [None, None]
                    size:[200,50]
            Button:
                id:test
                text: 'weather icon'
                size_hint: [None, None]
                size:[100,100]

enter image description here

1 Ответ

1 голос
/ 02 октября 2019

Одним из способов является использование kivy.uix.AnchorLayout

Документы: AnchorLayout

BoxLayout:
    orientation:'horizontal'
    BoxLayout:
        size_hint: [.8, 1]
        orientation:'horizontal'
        StackLayout:
            orientation:'tb-rl'
            canvas:
                Color:
                    rgb: [.3, .320, .380]
                Rectangle:
                    pos: self.pos
                    size: self.size
            Button:
                id:current_temperature
                text: root.display_current_temperature()
                font_size:40
                size_hint: [None, None]
                size:[200,50]
            Button:
                id:current_location
                text: root.display_location()
                font_size:15
                size_hint: [None, None]
                size:[200,50]
    BoxLayout:
        size_hint:[.2, 1]
        AnchorLayout:
            anchor_x: 'center'
            anchor_y: 'top'
            Button:
                id:test
                text: 'weather icon'
                size_hint: [1, None]

Обратите внимание, что я изменил размер последнегоВиджет кнопки от абсолютного до относительного. Это предотвратит непредвиденное поведение при рендеринге приложения на экранах разных размеров.

Также изменил размеры основных 2 виджетов BoxLayout на относительные также по той же причине, что и выше.

Другойспособ добавить подсказку позиции к виджету кнопки

Документы: pos_hint

Button:
    pos_hint: {'y': 1-1/(self.parent.height/self.height)}
    id:test
    text: 'weather icon'
    size_hint: [None, None]
    size:[100,100]
...