AttributeError: type object 'Image' has no attribute 'open' Was Tun (Python, PIL)?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du bindest zwei unterschiedliche Image-Typen in deinem Skript ein. Zum einen das von PIL und zum anderen das von tkinter. Der Interpreter sucht nun im falschen Typ nach einer open-Methode.

Entferne einfach:

from tkinter import *

Du bindest tkinter eh bereits in Zeile 2 ein. Die tkinter-Typen musst du in Folge alle über dein Alias tk aufrufen.

tkinter besitzt auch ein Image, du fabrizierst also eine Namenskollision.

Normalerweise würde man ein:

import PIL
import tkinter

Du benutzt ja bei tkinter schon eine Umbenennung, verzichte doch einfach darauf alles von tkinter in den Haputnamensraum zu ziehen.

Was Du auch machen könntest:

from PIL import Image as PILImg, ImageTk as PILImgTk

....
img=PILImgTk.PhotoImage(PILImg.open('logo.png'))

Nur um mal weitere Möglichkeiten zu erörtern.