Fehler beim Importieren von 'ImageTK'

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kapf
User
Beiträge: 13
Registriert: Sonntag 30. September 2012, 15:08

Hallo,

ich möchte für ein Programm das Modul 'ImageTK' importieren, allerdings wird mir diese Fehlermeldung ausgegeben:
ImportError: cannot import name ImageTK
Mein Programm besteht bisher nur aus der Import-Zeile:

Code: Alles auswählen

from PIL import ImageTK
Allerdings bekomme ich keine Fehlermeldung, wenn ich dieses Programm ausführe:

Code: Alles auswählen

import tkinter as tk
from PIL import Image, ImageTk

class SampleApp(tk.Tk):
    '''Illustrate how to drag items on a Tkinter canvas'''

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # create a canvas
        self.canvas = tk.Canvas(width=400, height=400)
        self.canvas.pack(fill="both", expand=True)

        # this data is used to keep track of an 
        # item being dragged
        self._drag_data = {"x": 0, "y": 0, "item": None}

        # create a couple movable objects
        self._create_token((100, 100))

        # add bindings for clicking, dragging and releasing over
        # any object with the "token" tag
        self.canvas.tag_bind("token", "<ButtonPress-1>", self.OnTokenButtonPress)
        self.canvas.tag_bind("token", "<ButtonRelease-1>", self.OnTokenButtonRelease)
        self.canvas.tag_bind("token", "<B1-Motion>", self.OnTokenMotion)

    def _create_token(self, coord):
        '''Create a token at the given coordinate in the given color'''
        (x,y) = coord
        #self.canvas.create_oval(x-25, y-25, x+25, y+25, 
        #                        outline=color, fill=color, tags="token")
        self.image = Image.open("beispiel.png")
        self.photo = ImageTk.PhotoImage(self.image)
        self.canvas.create_image(x-25, y-25, image = self.photo,
                                 tags = "token")

    def OnTokenButtonPress(self, event):
        '''Being drag of an object'''
        # record the item and its location
        self._drag_data["item"] = self.canvas.find_closest(event.x, event.y)[0]
        self._drag_data["x"] = event.x
        self._drag_data["y"] = event.y

    def OnTokenButtonRelease(self, event):
        '''End drag of an object'''
        # reset the drag information
        self._drag_data["item"] = None
        self._drag_data["x"] = 0
        self._drag_data["y"] = 0

    def OnTokenMotion(self, event):
        '''Handle dragging of an object'''
        # compute how much this object has moved
        delta_x = event.x - self._drag_data["x"]
        delta_y = event.y - self._drag_data["y"]
        # move the object the appropriate amount
        self.canvas.move(self._drag_data["item"], delta_x, delta_y)
        # record the new position
        self._drag_data["x"] = event.x
        self._drag_data["y"] = event.y

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()
Basiert auf: http://stackoverflow.com/a/6789351
Hat jemand eine Idee, woran das liegen könnte?

Danke im Voraus,
Kapf

EDIT: Habe bei dem Programm oben mal alles bis auf 'from PIL import ImageTK' rausgelöscht. Kommt keine Fehlermeldung.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

"import ImageTk" geht wohl nicht?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@darktrym: Das sollte man nicht mehr verwenden. Die PIL-Module sind in das PIL-Package gewandert und der direkte Import nicht über das Package wird abgeschafft.
Antworten