在scrollview中创建gridview,即屏幕的大小

时间:2014-05-01 21:37:09

标签: python kivy

我试图用滚动内部的方形元素制作网格视图。我在文档中找到了一些代码,在互联网上找到了一些代码,我设法让一些工作变得有效。

class ElementPage(Screen):
    def __init__(self, **kwargs):
        layout = GridLayout(cols=3, spacing=10, size_hint_y=None)
        layout.bind(minimum_height=layout.setter('height'))
        for i in range(100):
            icon = ElementIcon(str(i), "cat.png", size_hint_y=None)
            icon.height = icon.width
            layout.add_widget(icon)
        scrollview = ScrollView(size_hint=(None, None), size=(400, 400), pos_hint={'center_x': .5, 'center_y': .5})
        scrollview.add_widget(layout)
        super().__init__(**kwargs)
        self.add_widget(scrollview)

运行这个我得到一个我可以滚动的ElementIcon滚动网格,但它的大小总是400x400像素,无论窗口大小如何。有没有办法使它成为窗口的大小(实际上是父窗口小部件),或者更好的是有没有办法设置我希望它的大小的百分比?

我试过搞乱代码,特别是这一行:

scrollview = ScrollView(size_hint=(None, None), size=(400, 400), pos_hint={'center_x': .5, 'center_y': .5})

但没有运气。

2 个答案:

答案 0 :(得分:0)

只要您没有为ScrollView指定任何尺寸,我就可以使用。

改变这个:

scrollview = ScrollView(size_hint=(None, None), size=(400, 400), pos_hint={'center_x': .5, 'center_y': .5})

......对此:

scrollview = ScrollView()

为了保持按钮方块,我们可以使用GridLayout' s row_default_height

layout = GridLayout(cols=3, spacing=10, size_hint_y=None, row_force_default=True)
layout.bind(width=lambda *_: setattr(layout, 'row_default_height', 
        (layout.width - (layout.spacing[0] * (layout.cols - 1))) / layout.cols))
layout.bind(minimum_height=layout.setter('height'))

答案 1 :(得分:0)

您可以尝试更改:

  

大小=(400400)

  

size =(min(root.width,root.height),min(root.width,root.height))