Example #1
0
def main():
    from optparse import OptionParser
    parser = OptionParser()
    parser.add_option('-W', '--width',  type='int', default=300)
    parser.add_option('-H', '--height', type='int', default=300)
    parser.add_option('-c', '--center', type='complex', default=0+0j)
    parser.add_option('-s', '--side',   type='float', default=4)
    (options, args) = parser.parse_args()

    root = Tk()
    l = Label(root)
    l.pack()

    W, H = options.width, options.height
    center, side = options.center, options.side

    im = Image.new('P', (W, H), 0)
    im.putpalette([randrange(256) for n in range(3 * 256)])
    p = im.load()
    
    z = z_converter(W, H, center, side)
    l.pim = PhotoImage(im)
    l.config(image=l.pim)

    def paint_column(x):
        if x % 10 == 0: print "Column %d" % x
        for y in range(H):
            p[x, y] = pixel(z(x, y))
        l.pim = PhotoImage(im)
        l.config(image=l.pim)

        if x + 1 < W:
            root.after(1, paint_column, x + 1)

    def start(event):
        root.after(1, paint_column, 0)

    root.bind('<FocusIn>', start)
    root.mainloop()