Thanks very much to all those who responded to me and thanks to my good buddy and Python wiz, Kirke. I've included my code below, which periodically checks if a file is changed, and if so, it changes the image displayed in a window. The trick (as suggested) was to use "after" to get the event to repeatedly call itself. In the code below this is showStatus.after() at the end of the checkFileMod() function.
-- import Tkinter import os root = Tkinter.Tk() # initialize parameters checkFile = "C:/BTL/Code/GC/IPSi/test3.txt" # check if this file changed img1=Tkinter.PhotoImage(file='./img1.gif') # display image 1 img2=Tkinter.PhotoImage(file='./img2.gif') # display image 2 interval = 3000 # time [msec] between checking # label widget shows status of image being displayed showStatus = Tkinter.Label() showStatus.pack() # canvas widget displays image that changes when file changes canvas=Tkinter.Canvas(root, width=400, height=400) canvas.create_image(145,280, image=img1) canvas.bind("<Button-1>", quitThis) # bind left mouse button to quit app canvas.pack() # function quits application def quitThis(event): canvas.destroy() root.destroy() root.quit() # function changes canvas if file is modified def checkFileMod(): global imgNum global fileStatus, fileStatusB4 fileStatus = os.stat(checkFile) print "file status: ", fileStatus.st_mtime if fileStatus != fileStatusB4: print "CHANGED" if imgNum == 1: showStatus.config(text="img2") imgNum = 2 canvas.create_image(145,280, image=img2) canvas.pack() else: showStatus.config(text="img1") imgNum = 1 canvas.create_image(145,280, image=img1) canvas.pack() fileStatusB4 = fileStatus showStatus.after(interval, checkFileMod) # run with initial values before loop imgNum = 1 showStatus.config(text="img1") fileStatusB4 = os.stat(checkFile) # file status before #loop checkFileMod() showStatus.mainloop()
_______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss