Как можно открыть изображение, задав путь к нему с помощью pillow (python)?

#python #python-imaging-library

#python #python-imaging-library

Вопрос:

Я пытаюсь передать путь к изображению, а затем открыть его, но я получаю эту ошибку для этой строки image = Image.open(path) :

Ошибка атрибута: объект типа «Изображение» не имеет атрибута «открыть»

 from PIL import Image
from tkinter import *

class Menu:
    def __init__(self,root):
        self.root = root
        self.root.title("Image")
        self.image_entry = Entry(root)
        self.image_entry.grid(row=0,column=1)
        image_label = Label(root,text = "Enter the path of the image").grid(row=0)


        images = Button(root,text="Show",command=lambda:[self.show(self.image_entry)]).grid(row=1,column=1)

        root.mainloop()


   def show(self,image_entry):
        path=image_entry.get()
        image = Image.open(path)
        image.show()
  

Ответ №1:

Переменная Image , импортированная из PIL, перезаписывается переменной Image , импортированной из Tkinter.

Возможные решения в порядке убывания наилучшей практики:

  • Не импортируйте вещи из tkinter с помощью import * . Попробуйте импортировать только нужные вам имена, например from tkinter import Entry, Label, Button, Tk .
  • Выберите псевдоним для файлов PIL Image , который не конфликтует с Tkinter Image . Например, from PIL import Image as PILImage .
  • Измените порядок вашего импорта, чтобы PIL Image перезаписывал Tkinter Image , а не наоборот.