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

Python使用tkinter加载图片时报错找不到pyimage2文件是什么原因?

报错原因
  • 核心错误在代码第17行filename=PhotoImage(file= bg):你已经在第12行通过bg = PhotoImage(file = path + "\\BGnew.png")把背景图加载为PhotoImage类型的图片对象了,而PhotoImage的file参数要求传入的是文件路径字符串,你传入已生成的图片对象后,tkinter会把图片对象的内部标识(比如报错里的pyimage2)当做文件名去磁盘查找,自然找不到对应文件触发报错。
  • 额外的路径写法隐患:硬编码\\做路径分隔符只适用于Windows系统,跨平台运行会出错。
  • 隐形坑:如果图片对象没有被组件引用保留,会被Python垃圾回收机制清理,导致运行后背景不显示。
解决方法

直接删除重复创建图片对象的冗余逻辑,用已经加载好的bg对象给Label赋值即可,同时优化路径拼接写法适配多系统,修正后的完整代码如下:

from tkinter import *
from locate import this_dir
import os

# 用os.path.join拼接路径,自动适配不同系统的分隔符
path = this_dir()
bg_path = os.path.join(path, "BGnew.png")
icon_path = os.path.join(path, "icon.png")

print(bg_path)

window = Tk()
window.geometry("480x480")
window.title("CodeHook - Start Menu")
ico = PhotoImage(file=icon_path)
bg = PhotoImage(file=bg_path)

window.iconphoto(True, ico)

# 直接用已加载的bg对象创建背景标签
background_label = Label(window, image=bg)
# 把图片对象绑定到标签属性上,避免被垃圾回收导致背景不显示
background_label.image = bg
background_label.place(x=0, y=0, relwidth=1, relheight=1)

new_workspace = Button(window, text = "New Workspace", font = ("", 13))
new_workspace.pack()

window.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:45:03