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

PySimpleGUI如何实现程序启动时自动加载本地图片无需点击按钮

PySimpleGUI 启动自动加载本地图片修改方案

核心修改逻辑

原有代码的图片加载逻辑完全绑定在「Load Image」按钮的点击事件分支下,必须触发点击才会执行。要实现程序启动即自动显示图片,只需要在窗口实例创建完成、进入事件监听循环之前,直接执行图片加载和控件更新代码即可,不需要依赖任何用户交互触发。

具体调整点

  • 把原本写在event == "Load Image"判断内的图片读取、缩放、转字节流、更新Image控件的代码,移动到窗口创建语句之后、while True事件循环之前的位置
  • 如果不需要手动触发加载的按钮,可以直接删除布局中的sg.Button("Load Image")项精简界面
  • 保留图片路径前的r前缀,避免Windows路径中的反斜杠被识别为转义字符,导致路径识别错误
  • 创建窗口时添加finalize=True参数,确保所有控件提前完成初始化,避免进入事件循环前操作控件时报错

修改后可直接运行的代码

import io
import PySimpleGUI as sg
from PIL import Image

# 固定图片路径
IMAGE_PATH = r'D:\Users\j84202301\Desktop\dog.jpg'

# 界面布局,不需要Load Image按钮可直接删除对应行
layout = [
    [sg.Image(key="-IMAGE-")],
    [sg.Button("Load Image")]
]
window = sg.Window("Image Viewer", layout, finalize=True)

# 启动自动加载图片逻辑
try:
    image = Image.open(IMAGE_PATH)
    image.thumbnail((200, 200))
    bio = io.BytesIO()
    image.save(bio, format="PNG")
    window["-IMAGE-"].update(data=bio.getvalue())
except FileNotFoundError:
    sg.popup_error(f"指定路径下未找到图片:{IMAGE_PATH}")

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    # 保留按钮点击加载逻辑,删除按钮的话可同步删掉这段判断
    if event == "Load Image":
        image = Image.open(IMAGE_PATH)
        image.thumbnail((200, 200))
        bio = io.BytesIO()
        image.save(bio, format="PNG")
        window["-IMAGE-"].update(data=bio.getvalue())

window.close()

额外说明:代码中增加了文件不存在的异常捕获,避免路径配置错误时程序直接无提示闪退。如果不需要保留按钮加载的能力,删除布局中的按钮项和事件循环里对应的判断分支即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:51:32