#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
, который не конфликтует с TkinterImage
. Например,from PIL import Image as PILImage
. - Измените порядок вашего импорта, чтобы PIL
Image
перезаписывал TkinterImage
, а не наоборот.