from tkinter import * from random import * # window and canvas to draw on def setup() : global window global canvas window = Tk() canvas = Canvas(window, width=600, height=450, bg='white') canvas.pack() Button(window, text="Grow", command=grow).pack() Button(window, text="Bloom", command=bloom).pack() Button(window, text="Clear", command=clear).pack() canvas.bind("", plant) window.mainloop() # list of the flower values (x, y, ht, bloom) flowers = [] def plant(event) : flowers.append((event.x, event.y, 20, False)) drawAll() def grow() : for i in range(len(flowers)) : flowers[i] = (flowers[i][0], flowers[i][1], flowers[i][2]+20, flowers[i][3]) drawAll() def bloom() : for i in range(len(flowers)) : flowers[i] = (flowers[i][0], flowers[i][1], flowers[i][2], True) drawAll() def clear() : flowers = [] canvas.delete(ALL) canvas.update() # Drawing the flowers def drawAll() : canvas.delete(ALL) for flower in flowers : if flower[3] : drawBloom(flower[0], flower[1], flower[2]) else : drawBud(flower[0], flower[1], flower[2]) canvas.update() def drawBud(x, y, ht) : stem = 3 # half the width of the stem flower = 9 # radius of the bud top = y-ht canvas.create_rectangle(x-stem, top, x+stem, y, fill="green", outline="green") canvas.create_oval(x-flower, top-flower, x+flower, top+flower, fill="green", outline="green") def drawBloom(x, y, ht) : stem = 3 # half the width of the stem flower = 15 # radius of the bud top = y-ht canvas.create_rectangle(x-stem, top, x+stem, y, fill="green", outline="green") canvas.create_oval(x-flower, top-flower, x+flower, top+flower, fill="red", outline="red") setup()