将BoxLayout与GridLayout中的按钮居中

时间:2019-04-16 14:33:47

标签: python python-3.x kivy kivy-language

我正在与kivy合作进行一个新项目。在设计GUI时,遇到以下问题。

我有一个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"

结果窗口如下所示

但是我想要的是这些带有Bottons / Label的BoxLayouts在窗口中居中。

我该如何完成这项工作或必须更改什么?

1 个答案:

答案 0 :(得分:0)

Kivy AnchorLayoutanchor_x: 'center'anchor_y: 'center'一起使用

Kivy AnchorLayout » anchor_x

anchor_x
     

水平锚点。

     

anchor_x是OptionProperty,默认为“中心”。它   接受“左”,“中心”或“右”的值。

Kivy AnchorLayout » anchor_y

anchor_y
     

垂直锚点。

     

anchor_y是OptionProperty,默认为“中心”。它   接受“顶部”,“中心”或“底部”的值。

示例

以下示例说明了Kivy AnchorLayoutDynamic Classes的使用。

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