Chris Hare
2010-08-14 18:30:59 UTC
The scenario is this:
I want to loop around all of the images in a given directory (which I know will be images, but I guess I should check), show an image in a window, wait 2 seconds and show the next one and repeat that indefinitley, which will be until the user closes the window.
This is the code I extracted from the larger program and made work - sort of - in a standalone fashion. When I run the code, each of the file names gets displayed, and I can view the images, so it has to be something I am doing wrong with this chunk of code.
However, I don't see what the problem is.
from Tkinter import *
import time
import os
import ImageTk
import Image
class externalLoopDisplay:
def show(self):
#
# Create a frame
#
self.window = Tk()
self.f = Frame(self.window, bg="Gray")
self.f.grid()
self.btnRefresh = Button(self.f, text="Close", command=self.window.destroy, bg="Gray",highlightbackground="Red", highlightcolor="Green")
self.btnRefresh.grid(row=0, column=2)
self.loopImage()
def loopImage(self):
dir = "Radar/net17"
while 1:
fileList = os.listdir(dir)
number = len(fileList)
c = 1
for gifFile in fileList:
print "externalLoopDisplay.show:","top of for loop " + str(c) + " of " + str(number)
print "externalLoopDisplay.show:","showing file " + dir + "/" + gifFile
self.window.title("Image " + str(c) + " of " + str(number))
image = Image.open(dir + "/" + gifFile)
canvasWidth, canvasHeight = image.size
self.w = Canvas(self.f, width=canvasWidth, height=canvasHeight)
photo = ImageTk.PhotoImage(image=image)
netRadarImage = Label(self.w, image=photo)
netRadarImage.image = photo
self.w.grid(row=1, column=0, columnspan=3)
netRadarImage.grid( row=1, column=0)
time.sleep(10)
c = c + 1
self.w.destroy()
loop=externalLoopDisplay()
loop.show()
I want to loop around all of the images in a given directory (which I know will be images, but I guess I should check), show an image in a window, wait 2 seconds and show the next one and repeat that indefinitley, which will be until the user closes the window.
This is the code I extracted from the larger program and made work - sort of - in a standalone fashion. When I run the code, each of the file names gets displayed, and I can view the images, so it has to be something I am doing wrong with this chunk of code.
However, I don't see what the problem is.
from Tkinter import *
import time
import os
import ImageTk
import Image
class externalLoopDisplay:
def show(self):
#
# Create a frame
#
self.window = Tk()
self.f = Frame(self.window, bg="Gray")
self.f.grid()
self.btnRefresh = Button(self.f, text="Close", command=self.window.destroy, bg="Gray",highlightbackground="Red", highlightcolor="Green")
self.btnRefresh.grid(row=0, column=2)
self.loopImage()
def loopImage(self):
dir = "Radar/net17"
while 1:
fileList = os.listdir(dir)
number = len(fileList)
c = 1
for gifFile in fileList:
print "externalLoopDisplay.show:","top of for loop " + str(c) + " of " + str(number)
print "externalLoopDisplay.show:","showing file " + dir + "/" + gifFile
self.window.title("Image " + str(c) + " of " + str(number))
image = Image.open(dir + "/" + gifFile)
canvasWidth, canvasHeight = image.size
self.w = Canvas(self.f, width=canvasWidth, height=canvasHeight)
photo = ImageTk.PhotoImage(image=image)
netRadarImage = Label(self.w, image=photo)
netRadarImage.image = photo
self.w.grid(row=1, column=0, columnspan=3)
netRadarImage.grid( row=1, column=0)
time.sleep(10)
c = c + 1
self.w.destroy()
loop=externalLoopDisplay()
loop.show()