【问题标题】:Image in gridlayout kivygridlayout kivy中的图像
【发布时间】:2014-07-16 15:25:54
【问题描述】:

我正在尝试在 kivy 中创建一个 10x10 的图像网格,但我发现所有图像都被一个大的黑色边框隔开。图像似乎保持在恒定的 0f 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()

还需要注意的是,我的最终结果需要在更新函数中创建多个boxlayouts。

【问题讨论】:

    标签: python image kivy grid-layout


    【解决方案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

    【讨论】:

    • 谢谢。看来我没有尝试过“allow_stretch”和“keep_ratio”的组合。
    猜你喜欢
    • 2018-05-18
    • 2016-04-29
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2022-01-05
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多