kein Bild bei Label(parent, image=p)
Verfasst: Sonntag 16. Februar 2014, 23:03
Hallo,
ich wollte in einem ersten Versuch im Umgang mit Bilder und Tkinter diese schlicht anzeigen lassen. Dazu habe ich das Modul tkimg.py erstellt:
Rufe ich es über auf, so erwartete ich, dass jedes Bild zwei mal im Fenster angezeigt wird, da es in der Funktion ``test_image`` und außerhalb der Funktion ins Programmfenster eingefügt wird.
Jedes Bild wird aber nur 1x angzeigt und zwar nur durch den Bereich außerhalb der Funktion!
Wie kann das sein?
ich wollte in einem ersten Versuch im Umgang mit Bilder und Tkinter diese schlicht anzeigen lassen. Dazu habe ich das Modul tkimg.py erstellt:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import Tkinter as tk
from fnmatch import fnmatch
from PIL import Image, ImageTk
def convert_to_tk(image):
if isinstance(image, ImageTk.PhotoImage):
return image
elif isinstance(image, (str, unicode)):
return ImageTk.PhotoImage(Image.open(image))
if __name__ == "__main__":
def test_image(window, *bilder):
kw = {"relief": "groove"}
pw = {"side": "left"}
pictures = [convert_to_tk(b) for b in bilder]
[tk.Label(window, image=p, **kw).pack(**pw) for p in pictures]
window = tk.Tk()
window.title("Images")
bilderpfad = "."
bilder = [p for p in os.listdir(".") if fnmatch(p, "*.png")]
test_image(window, *bilder)
kw = {"relief": "groove"}
pw = {"side": "left"}
pictures = [convert_to_tk(b) for b in bilder]
[tk.Label(window, image=p, **kw).pack(**pw) for p in pictures]
window.mainloop()
Code: Alles auswählen
python tkimg.py
Jedes Bild wird aber nur 1x angzeigt und zwar nur durch den Bereich außerhalb der Funktion!
Wie kann das sein?