PIL.ImageTk in einer Klasse aufrufen
Verfasst: Freitag 16. April 2010, 19:15
Hallo,
ich hoffe, der Titel beschreibt ungefähr das Thema.
So sieht mein Skript aus:
Das Ergebnis ist, dass im Canvas2 das Bild angezeigt wird.
Im Canvas aus der Klasse Test jedoch nicht.
Der Unterschied besteht lediglich darin, dass einmal das Bild über eine Methode aufgerufen wird und im anderen Fall direkt erzeugt wird, oder seh ich das falsch ?
Wie kommt das zustande?
ich hoffe, der Titel beschreibt ungefähr das Thema.
So sieht mein Skript aus:
Code: Alles auswählen
import Tkinter as tk
from PIL import Image, ImageTk
class Test:
def __init__(self, frame):
self.canvas = tk.Canvas(frame, height=100, width=100)
self.canvas.grid()
self.bild_laden()
def bild_laden(self):
jpg = 'C:\users\pascal\\appdata\local\\temp\\tmps91imb.jpg'
bild = Image.open(jpg)
bild = ImageTk.PhotoImage(bild)
#print 'bild', bild
#self.canvas.delete('all')
self.canvas.create_image(50, 50, image=bild, tag = 'img') ## das bild ist nicht zu sehen
#print self.canvas.find_withtag('img') # es wird ein element gefunden
win = tk.Tk()
test = Test(win)
canvas2 = tk.Canvas(win, width=100, height=100)
canvas2.grid()
jpg = 'c:\users\pascal\\appdata\local\\temp\\tmps91imb.jpg'
bild = Image.open(jpg)
bild = ImageTk.PhotoImage(bild)
canvas2.create_image(50, 50,image=bild) ## das bild wird angezeigt
win.mainloop()
Im Canvas aus der Klasse Test jedoch nicht.
Der Unterschied besteht lediglich darin, dass einmal das Bild über eine Methode aufgerufen wird und im anderen Fall direkt erzeugt wird, oder seh ich das falsch ?
Wie kommt das zustande?