【问题标题】:How to make a Kivy GridLayout into scrollview?如何将 Kivy GridLayout 制作成滚动视图?
【发布时间】:2021-07-12 19:23:46
【问题描述】:

我正在尝试使用 Kivy 创建一个表单, right now it looks like this.

我在一个网格布局中完成了所有操作,如下所示:

(来自 .kv 文件):

<myGrid>:

    GridLayout:

        size: root.width, root.height
        cols:1
        Label:
            text: "Submit Communication Rules"
            size_hint: 0.6,0.3
            font_size: 40

        Label:
            text: "Change URI path:"
            size_hint:0.2,0.3
            font_size: 20

...等等...

在我拥有的 .py 文件中:

class rules_form(App):
    def build(self):
        return myGrid()


class myGrid(Widget):

...

最后:

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

正如您在图片中看到的,许多小部件都被压扁了,当我使用“+”按钮添加更多小部件时,情况变得更糟。

如何对其进行转换,使其仅显示网格的一部分,而您必须滚动查看其余部分?或者任何其他方式给小部件更多空间,这样它们就不会像这样相互重叠?

附言我尝试添加

ScrollView:
    do_scroll_x: False
    do_scroll_y: True
    size: root.width, root.height

在 .kv 文件中的 GridLayout 上方,但看起来相同。

【问题讨论】:

    标签: python user-interface scroll kivy kivy-language


    【解决方案1】:

    您必须允许GridLayout 增长。为此,只需将这些行添加到您的GridLayout

    height: self.minimum_height
    size_hint_y: None
    

    并删除:

    size: root.width, root.height
    

    请参阅documentation

    【讨论】:

    • 你的意思是有还是没有上面的 ScrollView?我一直在尝试你所说的没有上面的 ScrollView,它只显示了窗口左下角的 Grid 的顶部。我也尝试过,但这似乎对我不起作用。你能告诉我在ScrollView下写什么,在GridLayout下写什么吗?我对基维很陌生。提前致谢
    • 对于带有“height: self.minimum_height”和“size_hint_y: None”的GridLayout I get this。如果我对 I get this 以上的 ScrollView 做同样的事情。我做错了什么?
    • height: self.minimum_height 必须是ScrollView 的子代(我猜这是GridLayout)。当您使用self.minimum_height 时,您必须为GridLayout 提供足够的信息来计算最小高度。这意味着您必须为GridLayoutsize_hint(在y 方向)的每个孩子指定一个高度是不够的。
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多