无法理解size_hint。为什么这个.kv只是代码不像我预期的那样工作?

时间:2018-02-09 17:22:09

标签: python user-interface kivy screen sizehint

我正在学习Kivy图书馆,但我遇到了一些问题。 我尝试做一个简单的屏幕更改应用程序以进行一些练习但我在这里做了一些错误我认为:

                    BoxLayout:
                        orientation:"horizontal"
                        size_hint:1,0.5
                        Label :
                            text : "Nome :"
                        TextInput :
                            id : _name
                            multiline: False
                        Label :
                            text : "Cognome :"
                        TextInput :
                            id : _surname
                            multiline: False

代码是:

<ROT>:
    FloatLayout:
        AnchorLayout:
            anchor_y : "top"
            anchor_x: "right"
            BoxLayout:
                orientation : "horizontal"
                spacing: 10
                size_hint: 0.4,0.1
                Button:
                    id : "_bfr"
                    text : "<-----"

                Button:

                    id : "_aft"
                    text : "----->"
        AnchorLayout :
            anchor_x : "center"
            anchor_y : "bottom"
            ScreenManager:
                size_hint_y : 0.9
                id : _manager
                Screen :
                    name : "uno"
                    BoxLayout :
                        padding :50
                        spacing :10
                        orientation : "vertical"
                        BoxLayout:
                            orientation:"horizontal"
                            size_hint:1,0.5
                            Label :
                                text : "Nome :"
                            TextInput :
                                id : _name
                                multiline: False
                            Label :
                                text : "Cognome :"
                            TextInput :
                                id : _surname
                                multiline: False

我希望最后写的boxlayout是包含它的屏幕的1/2。

我无法理解
  

size_hint

与窗口的维度或&#34; parent&#34;的维度相关联。包括该小部件

1 个答案:

答案 0 :(得分:1)

Size_hints通常引用您的父窗口小部件。在这种情况下,BoxLayout是你的ScreenManager的0.5,这是你窗口的0.9。在这种情况下,BoxLayout垂直占您窗口的45%。

如果您希望BoxLayout占据屏幕的50%,则可以引用根小部件大小(包含在箭头中的顶级父级)

size_hints通常引用直接父窗口小部件。但是,您可以通过编写以下内容直接引用根窗口小部件(包含在箭头中的顶部窗口小部件)来更改此设置:

<Root>:
    WidgetLayout1: 
        size_hint: .2, .2
        BoxLayout:
            size_hint: root.width, root.height / 2

在这种情况下,BoxLayout比其父级大,因为它的大小等于根小部件的整个宽度,高度的一半。

但是在您的示例中,您的第二个框位于另一个具有填充和间距的BoxLayout中,它有自己的间距和大小调整规则,可能会超出您自己定义的大小提示。更不用说AnchorLayout的其他规则会进一步限制你进一步限制屏幕的某些区域。

您可以在此处详细了解BoxLayout