PIL Image show with Tk
From Noah.org
Jump to navigationJump to search
This is a small script to demonstrate using Tk to show PIL Image objects.
The advantage of this over using Image.show() is that it will reuse the
same window, so you can show multiple images without opening a new
window for each image. Image.show() calls an external application, which
is slower.
This will simply go through each file in the current directory and try to display it. If the file is not an image then it will be skipped. Click on the image display window to go to the next image.
#!/usr/bin/env python """This is a small script to demonstrate using Tk to show PIL Image objects. The advantage of this over using Image.show() is that it will reuse the same window, so you can show multiple images without opening a new window for each image. This will simply go through each file in the current directory and try to display it. If the file is not an image then it will be skipped. Click on the image display window to go to the next image. Noah Spurrier 2007 """ import os, sys import Tkinter import Image, ImageTk def button_click_exit_mainloop (event): event.widget.quit() # this will cause mainloop to unblock. return "break" root = Tkinter.Tk() root.bind("<Button>", button_click_exit_mainloop) root.geometry('+%d+%d' % (100,100)) dirlist = os.listdir('.') old_label_image = None for f in dirlist: try: image1 = Image.open(f) root.geometry('%dx%d' % (image1.size[0],image1.size[1])) tkpi = ImageTk.PhotoImage(image1) label_image = Tkinter.Label(root, image=tkpi) label_image.place(x=0,y=0,width=image1.size[0],height=image1.size[1]) label_image.update() root.title(f) if old_label_image is not None: old_label_image.destroy() old_label_image = label_image root.mainloop() except Exception, e: # skip anything not an image. # note that this will hide other errors as well. pass