我试图用滚动内部的方形元素制作网格视图。我在文档中找到了一些代码,在互联网上找到了一些代码,我设法让一些工作变得有效。
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})
但没有运气。
答案 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))