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

Kivy技术问题:如何获取固定窗口尺寸以维持Image初始大小

如何让Kivy Image组件保持窗口初始尺寸不变?

你需要做的就是在应用启动时捕获窗口的初始尺寸并保存为固定值,之后把这个固定值绑定给Image组件的宽高即可。这样不管后续窗口怎么缩放,Image都会保持一开始的大小。下面是具体实现步骤:

方法一:结合Kv语言实现

首先在你的App类中添加属性存储初始尺寸,然后在on_start方法中获取窗口的初始值(这个方法会在应用完全启动、窗口渲染完成后触发,能确保拿到准确的初始尺寸):

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window

class MyLayout(BoxLayout):
    pass

class MyApp(App):
    # 初始化存储初始尺寸的属性
    initial_width = 0
    initial_height = 0

    def on_start(self):
        # 记录窗口启动时的尺寸
        self.initial_width = Window.width
        self.initial_height = Window.height

    def build(self):
        return MyLayout()

if __name__ == '__main__':
    MyApp().run()

然后在对应的Kv文件中,直接引用App实例的固定尺寸属性:

<MyLayout>:
    Image:
        source: "your_image_path.png"  # 替换成你的图片路径
        size_hint: None, None
        width: app.initial_width
        height: app.initial_height

方法二:纯Python代码实现

如果习惯用纯Python代码构建界面,也可以直接在布局初始化时设置:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.core.window import Window

class MyLayout(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        app = App.get_running_app()
        # 创建Image组件并设置固定尺寸
        fixed_size_img = Image(
            source="your_image_path.png",
            size_hint=(None, None),
            width=app.initial_width,
            height=app.initial_height
        )
        self.add_widget(fixed_size_img)

class MyApp(App):
    initial_width = 0
    initial_height = 0

    def on_start(self):
        self.initial_width = Window.width
        self.initial_height = Window.height

    def build(self):
        return MyLayout()

if __name__ == '__main__':
    MyApp().run()

关键说明

  • on_start方法是获取初始尺寸的最佳时机:它会在所有界面组件加载完成、窗口正常显示后执行,能避免因窗口初始化过程中的尺寸波动导致值不准确。
  • 一旦initial_width和initial_height被赋值,后续窗口缩放时这两个值不会再改变,所以Image的大小会一直保持初始状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:22:24