Kivy中设置size_hint_y:None的BoxLayout内Image无法修改尺寸怎么办
问题原因
- Kivy 中
Image组件默认配置为allow_stretch: False,禁止将图片拉伸到组件自身的设置尺寸,只会按照图片原始比例渲染。你手动设置的height: 2000仅会撑开 Image 组件的占位区域,图片本身不会放大,因此组件区域内会出现大量空白。 - 你给 Image 设置了
size_hint: None, None后,两个维度的尺寸都需要手动指定,你只配置了 height 没有配置 width,会导致组件宽度异常。
解决方案
无需修改父容器的 size_hint_y: None 配置,仅调整 Image 组件的KV配置即可解决问题,修改后的完整运行代码如下:
from kivy.app import App from kivy.lang import Builder Kv=(""" ScrollView: BoxLayout: orientation:'vertical' size_hint_y:None height:self.minimum_height spacing:5 BoxLayout: id: parent_box orientation:'vertical' size_hint_y:None height:self.minimum_height spacing:20 Image: allow_stretch: True keep_ratio: True width: parent_box.width height: 2000 size_hint: None, None source:"/storage/3666-3432/Download/Lion.jpg" """ ) class MyApp(App): def build(self): return Builder.load_string(Kv) MyApp().run()
配置说明
allow_stretch: True:核心配置,允许图片拉伸填充到Image组件的设置尺寸keep_ratio: True:保持图片原始宽高比,避免拉伸变形,不需要时可设置为Falsewidth: parent_box.width:将Image组件的宽度绑定为父容器宽度,避免出现横向空白,也可以手动设置固定宽度值,比如width: 1080
问题效果截图:
内容的提问来源于stack exchange,提问作者Ctrl7
相关产品推荐
相关产品推荐

