Reputation: 159
I'm trying to allow my Tkinter program to load and display .jpgs files from the standard .gif
import Image,ImageTk
root = Tk()
PILFile = Image.open("Image.jpg")
Image = PhotoImage(file=PILFile)
ImageLabel = Label(root,image=Image)
ImageLabel.image = Image
ImageLabel.pack()
root.mainloop()
The error message I get follows:
Traceback (most recent call last):
File "/home/paragon/Programs/Python/Web/MP3Tagger.py", line 25, in <module>
albumart = PhotoImage(file=PILfile)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3271, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3227, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "<JpegImagePlugin.JpegImageFile image mode=RGB size=1500x1500 at 0x98AEFCC>": no such file or directory
[Finished in 0.4s with exit code 1]
I am absouletly certain that the file exists in the correct format,what could I be doing wrong?
Upvotes: 3
Views: 4116
Reputation: 369034
According to The Tkinter PhotoImage Class:
The PhotoImage class can read GIF and PGM/PPM images from files:
.... If you need to work with other file formats, the Python Imaging Library (PIL) contains classes that lets you load images in over 30 formats, and convert them to Tkinter-compatible image objects:
from PIL import Image, ImageTk image = Image.open("lenna.jpg") photo = ImageTk.PhotoImage(image)
-> Replace Tkinter.PhotoImage
with ImageTk.PhotoImage
:
root = Tk()
PILFile = Image.open("Image.jpg")
Image = ImageTk.PhotoImage(PILFile) # <---
ImageLabel = Label(root, image=Image)
ImageLabel.image = Image
ImageLabel.pack()
root.mainloop()
Upvotes: 6
Reputation: 17532
Your error occurs because of the argument file
:
Image = PhotoImage(file=PILFile)
This would specify a file path. In addition, you want ImageTk.PhotoImage
. Instead, you want:
Image = ImageTk.PhotoImage(PILFile)
Upvotes: 1