[Tkinter-discuss] non-GUI event detection in Tkinter mainloop()
O'Gorman, Lawrence (Larry)
larry.ogorman at alcatel-lucent.com
Thu May 21 21:00:57 CEST 2009
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()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tkinter-discuss/attachments/20090521/4b20a474/attachment.htm>
More information about the Tkinter-discuss
mailing list