我正在尝试在kivy中创建一个10x10的图像网格,但我发现所有图像都被一个大的黑色边框分开。看起来这些图像保持在100x100像素的恒定值。
到目前为止我使用的代码不包含.kv文件:
class SkyBox(BoxLayout):
def update(self):
for i in range(100):
self.children[len(self.children)-1].add_widget(Image(source=random.choice(["rock.png","rock2.png"]))
class SkyGame(Widget):
def run(self):
box=SkyBox()
box.add_widget(GridLayout(cols=10))
box.update()
return box
class SkyApp(App):
def build(self):
return SkyGame().run()
if __name__=="__main__":
SkyApp().run()
还必须注意,我的最终结果需要在更新功能中创建多个boxlayout。
答案 0 :(得分:1)
self.children[len(self.children)-1]
这可以更简洁明了地写成self.children[-1]
。
add_widget(Image(source=random.choice(["rock.png","rock2.png"]))
默认情况下,图像小部件不会将图像拉伸超出其实际尺寸(在这种情况下,显然为100x100)。要更改此设置,只需设置其allow_stretch
属性:
add_widget(Image(source=random.choice(["rock.png","rock2.png"], allow_stretch=True))
如果您想让它在不同的方向上以不同的数量拉伸,您也可以添加keep_ratio=False
。