from Tkinter import * from glob import glob from tkMessageBox import askyesno from tkFileDialog import askopenfilename import random def makeWidgets(root): global mycanvas, myonoff mycanvas = Canvas(root, bg='white') mycanvas.pack(side=LEFT, expand=YES, fill=BOTH) myonoff = Button(root, text='Start', command=onStart) myonoff.pack(fill=BOTH) Button(root, text='Open', command=onOpen).pack(fill=BOTH) Button(root, text='Beep', command=onBeep).pack(fill=BOTH) Button(root, text='Quit', command=onQuit).pack(fill=BOTH) def onStart(): global myloop myloop = 1 myonoff.config(text='Stop', command=onStop) onTimer() def onStop(): global myloop myloop = 0 myonoff.config(text='Start', command=onStart) def onOpen(): global myimage onStop() pick = askopenfilename(initialdir=myopens) if pick: myimage = PhotoImage(file=pick) mycanvas.config(height=myimage.height(), width=myimage.width()) mycanvas.create_image(2, 2, image=myimage, anchor=NW) def onQuit(): if askyesno('Verify', 'Really quit?'): root.quit() def onBeep(): global mybeep mybeep = mybeep ^ 1 def onTimer(): global myimage if myloop: pick = random.choice(myfiles) myimage = PhotoImage(file=pick) mycanvas.create_image(2, 2, image=myimage, anchor=NW) if mybeep: root.bell() root.after(mymsecs, onTimer) # reschedule import sys if len(sys.argv) == 2: myopens = sys.argv[1] # if arg, it's the image dir else: myopens = '../gifs' # else default to startdir/gifs myfiles = glob(myopens + '/*.gif') # only show gifs (for now) root = Tk() makeWidgets(root) mymsecs = 2000 mybeep = 1 root.mainloop()