Reputation: 11
Basically I'm having trouble opening images (.jpg) in a tkinter GUI window.
I followed this tutorial: https://www.youtube.com/watch?v=lt78_05hHSk
But I just get a blank window.
from tkinter import *
root = Tk()
photo = PhotoImage(file=r"C:\Users\xxxx\OneDrive\Desktop\123k.jpg")
# photo = PhotoImage(file="123k.jpg")
label = Label(root, image=photo)
label.pack()
root.mainloop()
The file path is correct and .jpg
files are compatible with tkinter
. What could be going on?
I get this error
Traceback (most recent call last):
File "C:\Users\xxx\ytrewq.py", line 5,
in <module> photo = PhotoImage(file=r"C:\Users\xxxx\OneDrive\Desktop\123k.jpg")
File "C:\Users\xxxx\AppData\Local\Programs\Thonny\lib\tkinter_init_.py", line 3545,
in init Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\xxxx\AppData\Local\Programs\Thonny\lib\tkinter_init_.py", line 3501,
in init self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file
"C:\Users\xxxx\OneDrive\Desktop\123k.jpg"
Upvotes: 1
Views: 611
Reputation: 91
This error occurs because only PhotoImage function can't recognize the .jpg formate image. For this, you could use png formate or you could use
Image.open(path_of_the_file) and then
ImageTk.PhotoImage(img_object)
for this Image and ImageTk you have to import this from PIL module
from PIL import Image, ImageTk
The hole solution code:
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
# photo = PhotoImage(file=r"C:\Users\xxxx\OneDrive\Desktop\123k.jpg")
# photo = PhotoImage(file="123k.jpg")
img = Image.open(file=r"C:\Users\xxxx\OneDrive\Desktop\123k.jpg")
photo = ImageTk.PhotoImage(img)
label = Label(root, image=photo)
label.pack()
root.mainloop()
Upvotes: 1