from tkinter import Tk, Canvas, PhotoImage,NW,mainloop from time import clock def mandel_pixel(kx,ky): """ calculates the color index of the mandelbrot plane point passed in the arguments """ maxIt = 256 c = complex(kx, ky) z = complex(0.0, 0.0) for i in range(maxIt): z = z * z + c if abs(z) >= 2.0: return i return 256 def mandelbrot(xa,xb,ya,yb,x,y): """ returns a mandelbrot in a string for Tk PhotoImage""" #color string table in Photoimageform clr=[ ' #%02x%02x%02x' % (255-int(255*((i/255)**12)),0,0) for i in range(255,-1,-1)] clr.append(' #000000') #append the color of the centre as index 256 #calculate mandelbrot x,y coordinates for each screen pixel xm=[xa + (xb - xa) * kx /x for kx in range(x)] ym=[ya + (yb - ya) * ky /y for ky in range(y)] #build the Photoimage string by calling mandel_pixel to index in the color table return" ".join((("{"+"".join(clr[mandel_pixel(i,j)] for i in xm))+"}" for j in ym)) #window size x=640 y=480 #corners of the mandelbrot plan to display xa = -2.0; xb = 1.0 ya = -1.5; yb = 1.5 #Tkinter window window = Tk() canvas = Canvas(window, width = x, height = y, bg = "#000000");canvas.pack() img = PhotoImage(width = x, height = y) canvas.create_image((0, 0), image = img, state = "normal", anchor = NW) #do the mandelbrot t1=clock() img.put(mandelbrot(xa,xb,ya,yb,x,y)) print(clock()-t1, ' seconds') mainloop()