Python 在Kivy中添加动态小部件的大小不正确

Python 在Kivy中添加动态小部件的大小不正确,python,python-3.x,kivy,python-3.5,kivy-language,Python,Python 3.x,Kivy,Python 3.5,Kivy Language,我刚刚开始学习Kivy,我对事物的间隔有一些问题。我正在尝试从磁盘加载图像,然后以网格方式渲染它们 然而,图像都被挤压到左下角 #:kivy 1.11.0 <Gallery>: ScrollView: GridLayout: id: wall cols: 4 size_hint_y: None height: self.minimum_height <R

我刚刚开始学习Kivy,我对事物的间隔有一些问题。我正在尝试从磁盘加载图像,然后以网格方式渲染它们

然而,图像都被挤压到左下角

#:kivy 1.11.0

<Gallery>:
    ScrollView:
        GridLayout:
            id: wall
            cols: 4
            size_hint_y:  None
            height: self.minimum_height

<Root>:
    gallery: gallery_id

    BoxLayout:
        orientation: 'vertical'
        size: root.size
        ActionBar:
            ActionView:
                ActionPrevious:
                ActionButton:
                    text: "Button"
                    on_release: root.clickme()

        Gallery:
            id: gallery_id
这是它的外观(您可以看到图像被压扁,左下角):

如何正确地分隔这些图像?大概是这样的:

另外,当用户调整窗口大小时,是否有办法动态确定
GridLayout
中的
cols
属性?例如,如果用户增加窗口的宽度,则应用程序应支持更大的
col
大小。同样,如果用户缩小窗口,应用程序应该减小
列的大小。

<Gallery>:
    ScrollView:
        GridLayout:
            id: wall
            cols: 4
            size_hint_y:  None
            height: self.minimum_height
滚动视图: 网格布局: id:墙 科尔斯:4 尺寸提示:无 高度:自身最小高度
Gallery是Widget的一个子类,因此它不需要特别调整其子类的大小或位置,因此ScrollView的默认大小为(100100),位置为(0,0),因此GridLayout放置在同一区域内,因此所有图像都放在该小区域内

解决方案是使Gallery成为适当的布局类型,例如BoxLayout

另外,当用户调整窗口大小时,是否有一种方法可以动态确定GridLayout中的cols属性


在kv中:
cols:Window.size的一些函数

我想我明白了。。。我尝试过并更改了类定义:
类库(BoxLayout)
,但现在我看不到任何图像,只看到4个标签。应该有150个图像+标签?它们只是在ScrollView的可见部分之外吗?如果你尝试滚动会发生什么?我根本无法滚动。你可以在这里看到,我只看到4个标签和空图像:啊,我想出来了。。。
size\u hint\u y:None
将宽度减少到0,我认为。移除它,我就会看到图像。虽然它们都被挤压在一起,也没有卷轴出现,但它们都像孤独一样垂直堆叠在一起。是否因为我的动态
BoxLayout
(“
bl
”)在添加到网格时没有大小?我尝试过使用大小属性,但图像仍然堆叠在一起。还是不太明白kivy是怎么安排的:(
<Gallery>:
    ScrollView:
        GridLayout:
            id: wall
            cols: 4
            size_hint_y:  None
            height: self.minimum_height