我正在与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在窗口中居中。
我该如何完成这项工作或必须更改什么?
答案 0 :(得分:0)
将Kivy AnchorLayout与anchor_x: 'center'
和anchor_y: 'center'
一起使用
anchor_x
水平锚点。
anchor_x是OptionProperty,默认为“中心”。它 接受“左”,“中心”或“右”的值。
anchor_y
垂直锚点。
anchor_y是OptionProperty,默认为“中心”。它 接受“顶部”,“中心”或“底部”的值。
以下示例说明了Kivy AnchorLayout和Dynamic Classes的使用。
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"
"""))