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

2024-09-24 22:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个网格视图,里面有正方形元素可以滚动。我在文档中找到了一些代码,在互联网上找到了一些代码,我设法让一些代码工作起来。在

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像素大小,不管窗口大小。有没有一种方法可以使它成为窗口的大小(实际上是父窗口小部件),或者更好的是,有没有一种方法可以设置我想要它的大小百分比?在

我试着搞乱代码,尤其是这一行:

^{pr2}$

但运气不好。在


Tags: 代码selfnoneadd网格sizeinitwidget
2条回答

您可以尝试更改:

size=(400,400)

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

只要您不为ScrollView指定任何大小,我就可以工作。在

更改此项:

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

……对此:

^{pr2}$

要使按钮保持方形,我们可以使用GridLayoutrow_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'))

相关问题 更多 >