标签未受AnchorLayout影响 - Kivy

0 投票
1 回答
1512 浏览
提问于 2025-04-18 17:29

我刚开始学习kivy,遇到了一个布局的问题。

我使用了Anchor Layout来把一个按钮放在中间,代码是这样的:

Button: text: "A button" anchor_x:'center' anchor_y:'center'

但是当我尝试这样做的时候:

Label:
    text: "Hello World!"
    size_hint: 1, 1
    anchor_x:'center'
    anchor_y:'top'

它只是在默认的中心位置显示了“Hello World!”,但我想让它在我居中按钮的上面。

我试过很多方法,也看了文档,但找不到任何解释。

编辑:这里是两个文件:

py文件:

import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout

class Layout(AnchorLayout):
    pass

class LayoutApp(App):
    def build(self):
        return Layout()

if __name__ == '__main__':
    LayoutApp().run()

kv文件:

<Layout>:
    Label:
        text: "Hello World!"
        font_size: 50
        size_hint: None, None
        height: 100
        anchor_x:'center'
        anchor_y:'top'

    Button:
        text: "Button"
        background_colour: (0,0,1,1)
        size_hint: None, None
        size: 50, 50
        anchor_x:'center'
        anchor_y:'top'

1 个回答

1

size_hint: 1, 1

这就是你的问题,size_hint的意思是这个标签(Label)的大小和它的父布局是一样的,文字会显示在中间……也就是说,正好在屏幕的中间。无论这个标签锚定在哪里,都没关系,因为它没有空间可以移动。

你应该手动设置你想要的大小,比如:

size_hint_y:  None
height: 50

撰写回答