2.7.9: PhotoImage get/put

C Smith illusiontechniques at gmail.com
Tue Oct 20 21:44:47 EDT 2015


>> 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.



More information about the Python-list mailing list