0

我正在学习 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。我不明白如果

大小提示

与窗口的尺寸或包含该小部件的“父”的尺寸相关联

4

1 回答 1

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的更多信息。

于 2018-02-10T14:19:21.750 回答