Как открыть изображение, задав его путь с помощью подушки (python)? - PullRequest
0 голосов
/ 09 апреля 2019

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

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

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 Ответ

0 голосов
/ 09 апреля 2019

Переменная 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, а не наоборот.
...