Tkinter使用PhotoImage加载image.jpg报错找不到文件是什么原因?
报错原因
这个报错是两个层面的问题共同导致的:
- 程序找不到指定路径下的
image.jpg文件:你当前运行的脚本路径是C:\Users\USER-DAF005\PycharmProjects\Background_test\main.py,默认运行时的工作目录就是脚本所在的Background_test文件夹,你没有把image.jpg放在该文件夹下,或者文件名/后缀和你代码里写的不一致(比如系统隐藏了后缀,实际文件名为image.jpg.jpeg)。 - 原生Tkinter的
PhotoImage组件本身不支持JPG格式的图片,就算你文件路径放对了,后续也会抛出格式不兼容的报错,它仅原生支持PNG、GIF、PPM/PGM这类格式。
另外你现有代码里my_canvas.create_image(0, 0)漏了传入image参数,后续就算路径和格式都对,图片也不会显示。
解决方案
- 首先处理路径问题,二选一即可:
- 把你的图片文件放到
C:\Users\USER-DAF005\PycharmProjects\Background_test\目录下,和main.py同目录 - 直接在代码里写文件的绝对路径,注意路径里用正斜杠
/或者双反斜杠\\,不要用单个反斜杠,示例:file="C:/Users/USER-DAF005/Desktop/image.jpg"
- 把你的图片文件放到
- 然后处理图片格式问题,二选一即可:
- 不用额外安装库:把你的
image.jpg转成PNG或者GIF格式,修改对应代码即可,修改后的完整代码示例:
- 不用额外安装库:把你的
from tkinter import * root = Tk() root.title('TEST') root.iconbitmap("logo.ico") root.geometry("1008x720") # 注意这里文件名改成你转格式后的文件名,比如image.png bg = PhotoImage(file="image.png") my_canvas = Canvas(root, width=1080, height=720) my_canvas.pack(fill="both", expand=True) # 加上image参数指定图片,anchor=nw表示以左上角为坐标原点对齐 my_canvas.create_image(0, 0, image=bg, anchor="nw") root.mainloop()
- 要直接使用JPG格式:先安装Pillow库处理图片,运行命令
pip install pillow,再修改代码为如下版本即可:
from tkinter import * from PIL import Image, ImageTk root = Tk() root.title('TEST') root.iconbitmap("logo.ico") root.geometry("1008x720") # 加载JPG图片 bg_image = Image.open("image.jpg") bg = ImageTk.PhotoImage(bg_image) my_canvas = Canvas(root, width=1080, height=720) my_canvas.pack(fill="both", expand=True) my_canvas.create_image(0, 0, image=bg, anchor="nw") root.mainloop()
内容的提问来源于stack exchange,提问作者Tsix
相关产品推荐
相关产品推荐

