#python #tkinter #python-imaging-library #jpeg
#python #tkinter #python-imaging-library #jpeg
Вопрос:
from tkinter import *
from glob import glob
import demoCheck
import random
import quitter
from PIL import ImageTk
gifdir = 'd:/Python/Jupyter/Programming Python/Chap 8 - GUI/pic/'
class buttonpics(Frame):
def __init__(self, parent=None, dir='./gifs/', **kwargs):
Frame.__init__(self, parent, **kwargs)
self.pack()
self.lbl = Label(self, text='None', bg='blue', fg='red')
self.lbl.pack(fill=BOTH)
self.btn = Button(self, text='Press me', bg='white', command=self.draw)
self.btn.pack()
self.quitter = quitter.Quitter(self)
self.quitter.pack(anchor=S)
self.files = glob(dir '*.jpg')
self.images = [(file, ImageTk.PhotoImage(file=file))
for file in self.files]
def draw(self):
name, photo = random.choice(self.images)
self.btn.config(image=photo)
self.lbl.config(text=name)
buttonpics(dir=gifdir).mainloop()
Коды пытаются загрузить изображения в формате jpg в Tkinter через модуль ImageTk Pillow. Однако система выдала следующую ошибку:
> Traceback (most recent call last): File
> "d:/Python/Jupyter/Programming Python/Chap 8 -
> GUI/buttonpics-func.py", line 31, in <module>
> buttonpics(dir=gifdir).mainloop() File "d:/Python/Jupyter/Programming Python/Chap 8 -
> GUI/buttonpics-func.py", line 22, in __init__
> self.images = [(file, ImageTk.PhotoImage(file=file)) File "d:/Python/Jupyter/Programming Python/Chap 8 -
> GUI/buttonpics-func.py", line 22, in <listcomp>
> self.images = [(file, ImageTk.PhotoImage(file=file)) File "C:ProgramDataAnaconda3libsite-packagesPILImageTk.py", line 89,
> in __init__
> image = _get_image_from_kw(kw) File "C:ProgramDataAnaconda3libsite-packagesPILImageTk.py", line 58,
> in _get_image_from_kw
> return Image.open(source) File "C:ProgramDataAnaconda3libsite-packagesPILImage.py", line 2930,
> in open
> raise UnidentifiedImageError( PIL.UnidentifiedImageError: cannot identify image file 'd:/Python/Jupyter/Programming Python/Chap 8 -
> GUI/pic\IMG_4147.jpg' Exception ignored in: <function
> PhotoImage.__del__ at 0x00000226CF6CFD30> Traceback (most recent call
> last): File
> "C:ProgramDataAnaconda3libsite-packagesPILImageTk.py", line 118,
> in __del__
> name = self.__photo.name AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'
Если изменить расширение на png, программа может быть запущена плавно. Является ли это результатом проблемы совместимости с форматом jpg или есть какие-то другие причины? Спасибо за помощь!
Комментарии:
1. всегда помещайте полное сообщение об ошибке (начинающееся со слова «Traceback») в вопрос (не комментарий) в виде текста (не скриншота). Есть и другая полезная информация.
2.
pillow
должно работать.jpg
без проблем. У меня никогда не было проблем сjpg
, ноpillow
я могу использовать внешние библиотеки C / C для работы с разными форматами, и если у вас нет библиотеки C / Cjpg
, то у нее могут возникнуть проблемы с этим форматом.3. Спасибо за уведомление. Я опубликовал полное сообщение об ошибке.
4. Я получаю то же
UnidentifiedImageError
самое, когда пытаюсь открыть файл, который не является изображением. Таким образом, у вас может возникнуть одна из двух проблем: (1) вашIMG_4147.jpg
файл не является изображением или он не является JPG (попробуйте открыть его в любом средстве просмотра imge, чтобы узнать, может ли он открыть его и отобразить его свойства). (2) pilow нужны внешние библиотеки — для работы с JPG требуется библиотека C / Clibjpeg
, и вам, возможно, придется установить ее вручную.