>> def process(): # Ordinarily this would be process(photo,wdth,hgt) >> global wdth # but I ran into problems calling it from a button If you want to pass arguments to a command called when a button is clicked, you have to use 'lambda' in tkinter.
>> global hgt #command with parameters... >> global photo # the PhotoImage displayed by the calling code >> >> # indents set to 1 to avoid word wrap >> >> # Loop through rows and columns of the image >> v=wdth >> z=0 >> a=-1 >> for y in range (0,hgt): >> w=v >> v=z # swap v and z so rows are scanned l/r r/l l/r >> z=w >> a=-a # set our inc/dec step for lr->rl scan >> >> for x in range(v,z,a): >> pix = photo.get(x,y) if pix == u'0 0 0' : >> #pixel_turn_on() >> photo.put("#%02x%02x%02x" % (255,255,255), (x,y)) >> else: >> #pixel_turn_off() >> photo.put("#%02x%02x%02x" % (0,0,0), (x,y)) You can't expect a delay to happen during the mainloop() of the program. To interrupt the mainloop(), use: parent.after(n,someCommand) Where 'n' is some amount of milliseconds. Just have the parent widget or the root frame call it. -- https://mail.python.org/mailman/listinfo/python-list