I've got a small batch image-processing program (it adds the time a digital photo was taken to the lower right of the image), and as a feature, I wanted to show a thumbnail of each image it was being processed. I can't get the image to update, though.
I trimmed it down to a basic app indicating the problem and the code is at the end of this message. It should display the three listed sample images, one after another. The thing is, if I uncomment the raw_input call, it works. But I don't want to have to hit ENTER after each image. At first I wondered whether maybe the image data was bad, but that doesn't explain why it works fine with the raw_input call in place. I've hardly played with Tkinter, so I'm probably missing something obvious. I tried adding pack() calls for F2 and ImageLabel, and that made no difference. Ideas? Here's the code: ========================== import Tkinter as Tk import os, sys, time import Image, ImageTk class MyApp: def __init__(self, root): """initializer for Tkinter-based application""" self.root=root F1 = Tk.Frame(self.root) F1.pack() SelButton = Tk.Button(F1, text="Go", command=self.go) SelButton.pack(side="left") QuitButton = Tk.Button(F1, text="Quit", command=F1.quit) QuitButton.pack(side="left") F2 = Tk.Frame(self.root) F2.pack() self.ImageLabel = Tk.Label(F2) self.ImageLabel.pack() self.FilenameLabel = Tk.Label(F2) self.FilenameLabel.pack() def go(self): filenames = ["DSCN0184.JPG", "DSCN0185.JPG", "DSCN0186.JPG"] for name in filenames: im=Image.open(name) im.thumbnail((100,75)) Tkimage = ImageTk.PhotoImage(im) self.ImageLabel.config(image=Tkimage) self.FilenameLabel.config(text=name) time.sleep(2) raw_input("Press ENTER for next...") root = Tk.Tk() myapp = MyApp(root) root.mainloop() ========================== -- http://mail.python.org/mailman/listinfo/python-list