Центрирование BoxLayout с помощью кнопок внутри GridLayout - PullRequest
1 голос
/ 16 апреля 2019

Я работаю с KIVY для нового проекта.При разработке моего графического интерфейса я столкнулся со следующей проблемой:

У меня есть GridView, разделяющий мое окно на три секции.Верхние разделы содержат заголовок, а средний раздел должен содержать центрированные кнопки и метки.

Это мой текущий файл .kv:

<Main>:    
rows: 3

Label:
    font_size: 25  
    text: "Some Headline"

GridLayout:
    rows: 2
    row_force_default: True
    row_default_height: 40
    col_force_default: True
    col_default_width: 200

    BoxLayout:
        orientation: 'horizontal'
        Button:
            text: "Button 1"
        Label:
            text: "Label 1"

    BoxLayout:
        orientation: 'horizontal'
        Button:
            text: "Button 2"
        Label:
            text: "Label 2"

Полученное окно выглядит следующим образом

Но вместо этого я хочу, чтобы эти BoxLayouts с кнопками / надписями были центрированы в окне.

Как мне это сделать или что мне нужно изменить

1 Ответ

0 голосов
/ 16 апреля 2019

Использование Kivy AnchorLayout с anchor_x: 'center' и anchor_y: 'center'

Kivy AnchorLayout »anchor_x

anchor_x

Горизонтальный якорь.

anchor_x является OptionProperty и по умолчанию имеет значение «center».Он принимает значения 'left', 'center' или 'right'.

Kivy AnchorLayout »anchor_y

anchor_y

Вертикальная привязка.

anchor_y является OptionProperty и по умолчанию имеет значение «center».Он принимает значения «top», «center» или «bottom».

Пример

Следующий пример иллюстрирует использование Kivy AnchorLayout и Динамические классы .

main.py

from kivy.base import runTouchApp
from kivy.lang import Builder

runTouchApp(Builder.load_string("""
<MiddleSection@AnchorLayout>:    # Dynamic class
    anchor_x: 'center'
    anchor_y: 'center'

    btn_txt: ''
    lbl_txt: ''

    BoxLayout:
        size_hint: None, 1
        width: 200
        orientation: 'horizontal'
        Button:
            text: root.btn_txt
        Label:
            text: root.lbl_txt


GridLayout:    # Root rule
    rows: 3

    Label:
        font_size: 25
        text: "Some Headline"

    GridLayout:
        rows: 2
        row_force_default: True
        row_default_height: 40

        MiddleSection:
            btn_txt: "Button 1"
            lbl_txt: "Label 1"

        MiddleSection:
            btn_txt: "Button 2"
            lbl_txt: "Label 2"


"""))

Выход

Result

...