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?