You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:保持图片原始宽高比,避免拉伸变形,不需要时可设置为False
  • width: parent_box.width:将Image组件的宽度绑定为父容器宽度,避免出现横向空白,也可以手动设置固定宽度值,比如width: 1080

问题效果截图:
问题效果截图

内容的提问来源于stack exchange,提问作者Ctrl7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:54:03